about summary refs log tree commit diff
diff options
context:
space:
mode:
authorhdelc <hdelc02@gmail.com>2022-08-02 10:05:11 -0400
committerhdelc <hdelc02@gmail.com>2022-08-02 10:05:11 -0400
commitc643007a562004c0954bb6d4077caa19b1b6ed1c (patch)
tree67a6c40725606bf1d9609174132d5fa7ac6e82bb
parent6b37a795815af3cc4b8cd0b9a13108c060a9e214 (diff)
downloadrust-c643007a562004c0954bb6d4077caa19b1b6ed1c.tar.gz
rust-c643007a562004c0954bb6d4077caa19b1b6ed1c.zip
Add exhaustive location checking for `doc_alias` attribute
-rw-r--r--compiler/rustc_passes/src/check_attr.rs28
1 files changed, 24 insertions, 4 deletions
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs
index 2fcd85b2a53..4ff706ddfc3 100644
--- a/compiler/rustc_passes/src/check_attr.rs
+++ b/compiler/rustc_passes/src/check_attr.rs
@@ -619,10 +619,30 @@ impl CheckAttrVisitor<'_> {
             }
             // we check the validity of params elsewhere
             Target::Param => return false,
-            Target::Expression => Some("expression"),
-            Target::Statement => Some("statement"),
-            Target::Arm => Some("match arm"),
-            _ => None,
+            Target::Expression | Target::Statement | Target::Arm => Some(target.name()),
+            Target::ExternCrate
+            | Target::Use
+            | Target::Static
+            | Target::Const
+            | Target::Fn
+            | Target::Closure
+            | Target::Mod
+            | Target::GlobalAsm
+            | Target::TyAlias
+            | Target::OpaqueTy
+            | Target::Enum
+            | Target::Variant
+            | Target::Struct
+            | Target::Field
+            | Target::Union
+            | Target::Trait
+            | Target::TraitAlias
+            | Target::Method(..)
+            | Target::ForeignFn
+            | Target::ForeignStatic
+            | Target::ForeignTy
+            | Target::GenericParam(..)
+            | Target::MacroDef => None,
         } {
             tcx.sess.emit_err(errors::DocAliasBadLocation { span, attr_str, location });
             return false;