Rollup merge of #138577 - aDotInTheVoid:deprecate-deprecations, r=GuillaumeGomez
rustdoc-json: Don't also include `#[deprecated]` in `Item::attrs` Closes #138378 Not sure if this should bump `FORMAT_VERSION` or not. CC `@Enselic` `@LukeMathWalker` `@obi1kenobi` r? `@GuillaumeGomez,` best reviewed commit-by-commit
This commit is contained in:
commit
b15e663dbd
2 changed files with 51 additions and 10 deletions
|
@ -5,7 +5,7 @@ use std::{fmt, iter};
|
||||||
|
|
||||||
use arrayvec::ArrayVec;
|
use arrayvec::ArrayVec;
|
||||||
use rustc_abi::{ExternAbi, VariantIdx};
|
use rustc_abi::{ExternAbi, VariantIdx};
|
||||||
use rustc_attr_parsing::{ConstStability, Deprecation, Stability, StableSince};
|
use rustc_attr_parsing::{AttributeKind, ConstStability, Deprecation, Stability, StableSince};
|
||||||
use rustc_data_structures::fx::{FxHashSet, FxIndexMap, FxIndexSet};
|
use rustc_data_structures::fx::{FxHashSet, FxIndexMap, FxIndexSet};
|
||||||
use rustc_hir::def::{CtorKind, DefKind, Res};
|
use rustc_hir::def::{CtorKind, DefKind, Res};
|
||||||
use rustc_hir::def_id::{CrateNum, DefId, LOCAL_CRATE, LocalDefId};
|
use rustc_hir::def_id::{CrateNum, DefId, LOCAL_CRATE, LocalDefId};
|
||||||
|
@ -756,12 +756,7 @@ impl Item {
|
||||||
Some(tcx.visibility(def_id))
|
Some(tcx.visibility(def_id))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn attributes(
|
pub(crate) fn attributes(&self, tcx: TyCtxt<'_>, cache: &Cache, is_json: bool) -> Vec<String> {
|
||||||
&self,
|
|
||||||
tcx: TyCtxt<'_>,
|
|
||||||
cache: &Cache,
|
|
||||||
keep_as_is: bool,
|
|
||||||
) -> Vec<String> {
|
|
||||||
const ALLOWED_ATTRIBUTES: &[Symbol] =
|
const ALLOWED_ATTRIBUTES: &[Symbol] =
|
||||||
&[sym::export_name, sym::link_section, sym::no_mangle, sym::non_exhaustive];
|
&[sym::export_name, sym::link_section, sym::no_mangle, sym::non_exhaustive];
|
||||||
|
|
||||||
|
@ -772,8 +767,14 @@ impl Item {
|
||||||
.other_attrs
|
.other_attrs
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|attr| {
|
.filter_map(|attr| {
|
||||||
if keep_as_is {
|
if is_json {
|
||||||
Some(rustc_hir_pretty::attribute_to_string(&tcx, attr))
|
if matches!(attr, hir::Attribute::Parsed(AttributeKind::Deprecation { .. })) {
|
||||||
|
// rustdoc-json stores this in `Item::deprecation`, so we
|
||||||
|
// don't want it it `Item::attrs`.
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(rustc_hir_pretty::attribute_to_string(&tcx, attr))
|
||||||
|
}
|
||||||
} else if ALLOWED_ATTRIBUTES.contains(&attr.name_or_empty()) {
|
} else if ALLOWED_ATTRIBUTES.contains(&attr.name_or_empty()) {
|
||||||
Some(
|
Some(
|
||||||
rustc_hir_pretty::attribute_to_string(&tcx, attr)
|
rustc_hir_pretty::attribute_to_string(&tcx, attr)
|
||||||
|
@ -786,7 +787,9 @@ impl Item {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
if !keep_as_is
|
|
||||||
|
// Add #[repr(...)]
|
||||||
|
if !is_json
|
||||||
&& let Some(def_id) = self.def_id()
|
&& let Some(def_id) = self.def_id()
|
||||||
&& let ItemType::Struct | ItemType::Enum | ItemType::Union = self.type_()
|
&& let ItemType::Struct | ItemType::Enum | ItemType::Union = self.type_()
|
||||||
{
|
{
|
||||||
|
|
38
tests/rustdoc-json/attrs/deprecated.rs
Normal file
38
tests/rustdoc-json/attrs/deprecated.rs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
//@ is "$.index[*][?(@.name=='not')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='not')].deprecation" null
|
||||||
|
pub fn not() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='raw')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='raw')].deprecation" '{"since": null, "note": null}'
|
||||||
|
#[deprecated]
|
||||||
|
pub fn raw() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='equals_string')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='equals_string')].deprecation" '{"since": null, "note": "here is a reason"}'
|
||||||
|
#[deprecated = "here is a reason"]
|
||||||
|
pub fn equals_string() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='since')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='since')].deprecation" '{"since": "yoinks ago", "note": null}'
|
||||||
|
#[deprecated(since = "yoinks ago")]
|
||||||
|
pub fn since() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='note')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='note')].deprecation" '{"since": null, "note": "7"}'
|
||||||
|
#[deprecated(note = "7")]
|
||||||
|
pub fn note() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='since_and_note')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='since_and_note')].deprecation" '{"since": "tomorrow", "note": "sorry"}'
|
||||||
|
#[deprecated(since = "tomorrow", note = "sorry")]
|
||||||
|
pub fn since_and_note() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='note_and_since')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='note_and_since')].deprecation" '{"since": "a year from tomorrow", "note": "your welcome"}'
|
||||||
|
#[deprecated(note = "your welcome", since = "a year from tomorrow")]
|
||||||
|
pub fn note_and_since() {}
|
||||||
|
|
||||||
|
//@ is "$.index[*][?(@.name=='neither_but_parens')].attrs" []
|
||||||
|
//@ is "$.index[*][?(@.name=='neither_but_parens')].deprecation" '{"since": null, "note": null}'
|
||||||
|
#[deprecated()]
|
||||||
|
pub fn neither_but_parens() {}
|
Loading…
Add table
Add a link
Reference in a new issue