Auto merge of #83900 - torhovland:issue-83832, r=jyn514
Add stability tags to ImportItem. Fixes #83832.
This commit is contained in:
commit
a70fbf6620
@ -4,6 +4,7 @@
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::CtorKind;
|
||||
use rustc_hir::def_id::DefId;
|
||||
use rustc_middle::dep_graph::DepContext;
|
||||
use rustc_middle::middle::stability;
|
||||
use rustc_middle::ty::TyCtxt;
|
||||
use rustc_span::hygiene::MacroKind;
|
||||
@ -282,11 +283,40 @@ fn cmp(
|
||||
}
|
||||
|
||||
clean::ImportItem(ref import) => {
|
||||
let (stab, stab_tags) = if let Some(import_def_id) = import.source.did {
|
||||
let import_attrs = Box::new(clean::Attributes::from_ast(
|
||||
cx.tcx().sess().diagnostic(),
|
||||
cx.tcx().get_attrs(import_def_id),
|
||||
None,
|
||||
));
|
||||
|
||||
// Just need an item with the correct def_id and attrs
|
||||
let import_item = clean::Item {
|
||||
def_id: import_def_id,
|
||||
attrs: import_attrs,
|
||||
..myitem.clone()
|
||||
};
|
||||
|
||||
let stab = import_item.stability_class(cx.tcx());
|
||||
let stab_tags = Some(extra_info_tags(&import_item, item, cx.tcx()));
|
||||
(stab, stab_tags)
|
||||
} else {
|
||||
(None, None)
|
||||
};
|
||||
|
||||
let add = if stab.is_some() { " " } else { "" };
|
||||
|
||||
write!(
|
||||
w,
|
||||
"<tr><td><code>{}{}</code></td></tr>",
|
||||
myitem.visibility.print_with_space(myitem.def_id, cx),
|
||||
import.print(cx),
|
||||
"<tr class=\"{stab}{add}import-item\">\
|
||||
<td><code>{vis}{imp}</code></td>\
|
||||
<td class=\"docblock-short\">{stab_tags}</td>\
|
||||
</tr>",
|
||||
stab = stab.unwrap_or_default(),
|
||||
add = add,
|
||||
vis = myitem.visibility.print_with_space(myitem.def_id, cx),
|
||||
imp = import.print(cx),
|
||||
stab_tags = stab_tags.unwrap_or_default(),
|
||||
);
|
||||
}
|
||||
|
||||
@ -320,7 +350,7 @@ fn cmp(
|
||||
docs = MarkdownSummaryLine(&doc_value, &myitem.links(cx)).into_string(),
|
||||
class = myitem.type_(),
|
||||
add = add,
|
||||
stab = stab.unwrap_or_else(String::new),
|
||||
stab = stab.unwrap_or_default(),
|
||||
unsafety_flag = unsafety_flag,
|
||||
href = item_path(myitem.type_(), &myitem.name.unwrap().as_str()),
|
||||
title = [full_path(cx, myitem), myitem.type_().to_string()]
|
||||
|
@ -868,7 +868,8 @@ body.blur > :not(#help) {
|
||||
0 -1px 0 black;
|
||||
}
|
||||
|
||||
.module-item .stab {
|
||||
.module-item .stab,
|
||||
.import-item .stab {
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
font-size: 80%;
|
||||
@ -879,7 +880,8 @@ body.blur > :not(#help) {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.module-item.unstable {
|
||||
.module-item.unstable,
|
||||
.import-item.unstable {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
|
@ -252,7 +252,8 @@ details.rustdoc-toggle > summary::before {
|
||||
color: #929292;
|
||||
}
|
||||
|
||||
.module-item .stab {
|
||||
.module-item .stab,
|
||||
.import-item .stab {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,8 @@ details.rustdoc-toggle > summary::before {
|
||||
box-shadow: 0 0 8px 4px #078dd8;
|
||||
}
|
||||
|
||||
.module-item .stab {
|
||||
.module-item .stab,
|
||||
.import-item .stab {
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,8 @@ details.rustdoc-toggle > summary::before {
|
||||
box-shadow: 0 0 8px #078dd8;
|
||||
}
|
||||
|
||||
.module-item .stab {
|
||||
.module-item .stab,
|
||||
.import-item .stab {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
#![crate_name = "foo"]
|
||||
#![feature(doc_cfg)]
|
||||
|
||||
pub mod tag {
|
||||
#[deprecated(since = "0.1.8", note = "Use bar() instead")]
|
||||
pub trait Deprecated {}
|
||||
|
||||
#[doc(cfg(feature = "sync"))]
|
||||
pub trait Portability {}
|
||||
|
||||
#[deprecated(since = "0.1.8", note = "Use bar() instead")]
|
||||
#[doc(cfg(feature = "sync"))]
|
||||
pub trait Both {}
|
||||
|
||||
pub trait None {}
|
||||
}
|
||||
|
||||
// @has foo/mod1/index.html
|
||||
pub mod mod1 {
|
||||
// @has - '//code' 'pub use tag::Deprecated;'
|
||||
// @has - '//span' 'Deprecated'
|
||||
// @!has - '//span' 'sync'
|
||||
pub use tag::Deprecated;
|
||||
}
|
||||
|
||||
// @has foo/mod2/index.html
|
||||
pub mod mod2 {
|
||||
// @has - '//code' 'pub use tag::Portability;'
|
||||
// @!has - '//span' 'Deprecated'
|
||||
// @has - '//span' 'sync'
|
||||
pub use tag::Portability;
|
||||
}
|
||||
|
||||
// @has foo/mod3/index.html
|
||||
pub mod mod3 {
|
||||
// @has - '//code' 'pub use tag::Both;'
|
||||
// @has - '//span' 'Deprecated'
|
||||
// @has - '//span' 'sync'
|
||||
pub use tag::Both;
|
||||
}
|
||||
|
||||
// @has foo/mod4/index.html
|
||||
pub mod mod4 {
|
||||
// @has - '//code' 'pub use tag::None;'
|
||||
// @!has - '//span' 'Deprecated'
|
||||
// @!has - '//span' 'sync'
|
||||
pub use tag::None;
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
#![crate_name = "foo"]
|
||||
#![feature(doc_cfg)]
|
||||
#![feature(staged_api)]
|
||||
#![stable(feature = "rust1", since = "1.0.0")]
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod tag {
|
||||
#[unstable(feature = "humans", issue = "none")]
|
||||
pub trait Unstable {}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[doc(cfg(feature = "sync"))]
|
||||
pub trait Portability {}
|
||||
|
||||
#[unstable(feature = "humans", issue = "none")]
|
||||
#[doc(cfg(feature = "sync"))]
|
||||
pub trait Both {}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub trait None {}
|
||||
}
|
||||
|
||||
// @has foo/mod1/index.html
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod mod1 {
|
||||
// @has - '//code' 'pub use tag::Unstable;'
|
||||
// @has - '//span' 'Experimental'
|
||||
// @!has - '//span' 'sync'
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use tag::Unstable;
|
||||
}
|
||||
|
||||
// @has foo/mod2/index.html
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod mod2 {
|
||||
// @has - '//code' 'pub use tag::Portability;'
|
||||
// @!has - '//span' 'Experimental'
|
||||
// @has - '//span' 'sync'
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use tag::Portability;
|
||||
}
|
||||
|
||||
// @has foo/mod3/index.html
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod mod3 {
|
||||
// @has - '//code' 'pub use tag::Both;'
|
||||
// @has - '//span' 'Experimental'
|
||||
// @has - '//span' 'sync'
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use tag::Both;
|
||||
}
|
||||
|
||||
// @has foo/mod4/index.html
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod mod4 {
|
||||
// @has - '//code' 'pub use tag::None;'
|
||||
// @!has - '//span' 'Experimental'
|
||||
// @!has - '//span' 'sync'
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use tag::None;
|
||||
}
|
Loading…
Reference in New Issue
Block a user