about summary refs log tree commit diff
path: root/compiler/rustc_passes/src
diff options
context:
space:
mode:
authorDavid Wood <david@davidtw.co>2020-11-15 13:03:30 +0000
committerDavid Wood <david@davidtw.co>2020-11-29 14:05:19 +0000
commit75eb72cc9c23d31f10bd7b4ec6331dd8383cf829 (patch)
treecd756e11aca38951b968fb4ee1e2e192ac305316 /compiler/rustc_passes/src
parent2e5723137b2b88368d018b262a0a823a1423131b (diff)
downloadrust-75eb72cc9c23d31f10bd7b4ec6331dd8383cf829.tar.gz
rust-75eb72cc9c23d31f10bd7b4ec6331dd8383cf829.zip
passes: prohibit attrs on generic params
This commit modifies the `check_attr` pass so that attribute placement
on generic parameters is checked for validity.

Signed-off-by: David Wood <david@davidtw.co>
Diffstat (limited to 'compiler/rustc_passes/src')
-rw-r--r--compiler/rustc_passes/src/check_attr.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs
index 9c0234953bb..e0babd1885b 100644
--- a/compiler/rustc_passes/src/check_attr.rs
+++ b/compiler/rustc_passes/src/check_attr.rs
@@ -814,6 +814,18 @@ impl Visitor<'tcx> for CheckAttrVisitor<'tcx> {
         intravisit::walk_item(self, item)
     }
 
+    fn visit_generic_param(&mut self, generic_param: &'tcx hir::GenericParam<'tcx>) {
+        let target = Target::from_generic_param(generic_param);
+        self.check_attributes(
+            generic_param.hir_id,
+            generic_param.attrs,
+            &generic_param.span,
+            target,
+            None,
+        );
+        intravisit::walk_generic_param(self, generic_param)
+    }
+
     fn visit_trait_item(&mut self, trait_item: &'tcx TraitItem<'tcx>) {
         let target = Target::from_trait_item(trait_item);
         self.check_attributes(trait_item.hir_id, &trait_item.attrs, &trait_item.span, target, None);