about summary refs log tree commit diff
path: root/compiler/rustc_hir/src/target.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-12-09 17:27:18 +0000
committerMichael Goulet <michael@errs.io>2023-12-15 16:17:28 +0000
commitbc1ca6b52854d09cfdcb83d0559f3e72720aa41f (patch)
treed56c4f53dff780b5a6c615c542e857bd59bca6f3 /compiler/rustc_hir/src/target.rs
parent04fafd69dec85b02338cf303a21df93ad9594fa1 (diff)
downloadrust-bc1ca6b52854d09cfdcb83d0559f3e72720aa41f.tar.gz
rust-bc1ca6b52854d09cfdcb83d0559f3e72720aa41f.zip
Fix enforcement of generics for associated items
Diffstat (limited to 'compiler/rustc_hir/src/target.rs')
-rw-r--r--compiler/rustc_hir/src/target.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/compiler/rustc_hir/src/target.rs b/compiler/rustc_hir/src/target.rs
index 0d65ddb5642..8948a03e4a6 100644
--- a/compiler/rustc_hir/src/target.rs
+++ b/compiler/rustc_hir/src/target.rs
@@ -67,6 +67,42 @@ impl Display for Target {
 }
 
 impl Target {
+    pub fn is_associated_item(self) -> bool {
+        match self {
+            Target::AssocConst | Target::AssocTy | Target::Method(_) => true,
+            Target::ExternCrate
+            | Target::Use
+            | Target::Static
+            | Target::Const
+            | Target::Fn
+            | Target::Closure
+            | Target::Mod
+            | Target::ForeignMod
+            | Target::GlobalAsm
+            | Target::TyAlias
+            | Target::OpaqueTy
+            | Target::Enum
+            | Target::Variant
+            | Target::Struct
+            | Target::Field
+            | Target::Union
+            | Target::Trait
+            | Target::TraitAlias
+            | Target::Impl
+            | Target::Expression
+            | Target::Statement
+            | Target::Arm
+            | Target::ForeignFn
+            | Target::ForeignStatic
+            | Target::ForeignTy
+            | Target::GenericParam(_)
+            | Target::MacroDef
+            | Target::Param
+            | Target::PatField
+            | Target::ExprField => false,
+        }
+    }
+
     pub fn from_item(item: &Item<'_>) -> Target {
         match item.kind {
             ItemKind::ExternCrate(..) => Target::ExternCrate,