From fc6fb3fb8ff4589bf766e09670b1e0b005581500 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 12 Aug 2020 00:12:49 +0200 Subject: [PATCH] Allow #[doc(alias)] on impl const items --- src/librustc_passes/check_attr.rs | 8 ++------ src/test/rustdoc-js/doc-alias.js | 18 +++++++++++++++--- src/test/rustdoc-js/doc-alias.rs | 2 ++ .../check-doc-alias-attr-location.rs | 4 ++-- .../check-doc-alias-attr-location.stderr | 8 +------- src/test/ui/check-doc-alias-attr-location.rs | 2 +- .../ui/check-doc-alias-attr-location.stderr | 8 +------- 7 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/librustc_passes/check_attr.rs b/src/librustc_passes/check_attr.rs index a729bb5511005..62ba412cb4192 100644 --- a/src/librustc_passes/check_attr.rs +++ b/src/librustc_passes/check_attr.rs @@ -241,15 +241,11 @@ impl CheckAttrVisitor<'tcx> { if let Some(err) = match target { Target::Impl => Some("implementation block"), Target::ForeignMod => Some("extern block"), - Target::AssocConst | Target::AssocTy => { + Target::AssocTy => { let parent_hir_id = self.tcx.hir().get_parent_item(hir_id); let containing_item = self.tcx.hir().expect_item(parent_hir_id); if Target::from_item(containing_item) == Target::Impl { - Some(if target == Target::AssocConst { - "const in implementation block" - } else { - "type alias in implementation block" - }) + Some("type alias in implementation block") } else { None } diff --git a/src/test/rustdoc-js/doc-alias.js b/src/test/rustdoc-js/doc-alias.js index 896808d415780..ff188d5145801 100644 --- a/src/test/rustdoc-js/doc-alias.js +++ b/src/test/rustdoc-js/doc-alias.js @@ -5,7 +5,7 @@ const QUERY = [ 'StructFieldItem', 'StructMethodItem', 'ImplTraitItem', - 'ImplAssociatedConstItem', + 'StructImplConstItem', 'ImplTraitFunction', 'EnumItem', 'VariantItem', @@ -64,8 +64,16 @@ const EXPECTED = [ 'others': [], }, { - // ImplAssociatedConstItem - 'others': [], + // StructImplConstItem + 'others': [ + { + 'path': 'doc_alias::Struct', + 'name': 'ImplConstItem', + 'alias': 'StructImplConstItem', + 'href': '../doc_alias/struct.Struct.html#associatedconstant.ImplConstItem', + 'is_alias': true + }, + ], }, { 'others': [ @@ -197,6 +205,10 @@ const EXPECTED = [ 'href': '../doc_alias/constant.Const.html', 'is_alias': true }, + { + 'path': 'doc_alias::Struct', + 'name': 'ImplConstItem', + }, ], }, { diff --git a/src/test/rustdoc-js/doc-alias.rs b/src/test/rustdoc-js/doc-alias.rs index 28a720d06e8d3..41caa98643cdd 100644 --- a/src/test/rustdoc-js/doc-alias.rs +++ b/src/test/rustdoc-js/doc-alias.rs @@ -7,6 +7,8 @@ pub struct Struct { } impl Struct { + #[doc(alias = "StructImplConstItem")] + pub const ImplConstItem: i32 = 0; #[doc(alias = "StructMethodItem")] pub fn method(&self) {} } diff --git a/src/test/rustdoc-ui/check-doc-alias-attr-location.rs b/src/test/rustdoc-ui/check-doc-alias-attr-location.rs index 8a97cf7f8e892..545964c7bd61b 100644 --- a/src/test/rustdoc-ui/check-doc-alias-attr-location.rs +++ b/src/test/rustdoc-ui/check-doc-alias-attr-location.rs @@ -11,8 +11,8 @@ extern {} #[doc(alias = "bar")] //~ ERROR impl Bar { - #[doc(alias = "const")] //~ ERROR - const A: u32 = 0; + #[doc(alias = "const")] + pub const A: u32 = 0; } #[doc(alias = "foobar")] //~ ERROR diff --git a/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr b/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr index cc51101c16455..a66e9939eaf18 100644 --- a/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr +++ b/src/test/rustdoc-ui/check-doc-alias-attr-location.stderr @@ -16,17 +16,11 @@ error: `#[doc(alias = "...")]` isn't allowed on implementation block LL | #[doc(alias = "foobar")] | ^^^^^^^^^^^^^^^^ -error: `#[doc(alias = "...")]` isn't allowed on const in implementation block - --> $DIR/check-doc-alias-attr-location.rs:14:11 - | -LL | #[doc(alias = "const")] - | ^^^^^^^^^^^^^^^ - error: `#[doc(alias = "...")]` isn't allowed on type alias in implementation block --> $DIR/check-doc-alias-attr-location.rs:20:11 | LL | #[doc(alias = "assoc")] | ^^^^^^^^^^^^^^^ -error: aborting due to 5 previous errors +error: aborting due to 4 previous errors diff --git a/src/test/ui/check-doc-alias-attr-location.rs b/src/test/ui/check-doc-alias-attr-location.rs index 9f0b1dcf44af2..dac9b7372e08b 100644 --- a/src/test/ui/check-doc-alias-attr-location.rs +++ b/src/test/ui/check-doc-alias-attr-location.rs @@ -12,7 +12,7 @@ extern {} #[doc(alias = "bar")] //~ ERROR impl Bar { - #[doc(alias = "const")] //~ ERROR + #[doc(alias = "const")] const A: u32 = 0; } diff --git a/src/test/ui/check-doc-alias-attr-location.stderr b/src/test/ui/check-doc-alias-attr-location.stderr index b4a0847a002ba..29a99e4470e5f 100644 --- a/src/test/ui/check-doc-alias-attr-location.stderr +++ b/src/test/ui/check-doc-alias-attr-location.stderr @@ -16,17 +16,11 @@ error: `#[doc(alias = "...")]` isn't allowed on implementation block LL | #[doc(alias = "foobar")] | ^^^^^^^^^^^^^^^^ -error: `#[doc(alias = "...")]` isn't allowed on const in implementation block - --> $DIR/check-doc-alias-attr-location.rs:15:11 - | -LL | #[doc(alias = "const")] - | ^^^^^^^^^^^^^^^ - error: `#[doc(alias = "...")]` isn't allowed on type alias in implementation block --> $DIR/check-doc-alias-attr-location.rs:21:11 | LL | #[doc(alias = "assoc")] | ^^^^^^^^^^^^^^^ -error: aborting due to 5 previous errors +error: aborting due to 4 previous errors