about summary refs log tree commit diff
path: root/src/librustc/hir
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustc/hir')
-rw-r--r--src/librustc/hir/check_attr.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/librustc/hir/check_attr.rs b/src/librustc/hir/check_attr.rs
index d2270345260..d7194e9c2ca 100644
--- a/src/librustc/hir/check_attr.rs
+++ b/src/librustc/hir/check_attr.rs
@@ -47,7 +47,13 @@ struct CheckAttrVisitor<'a, 'tcx: 'a> {
 impl<'a, 'tcx> CheckAttrVisitor<'a, 'tcx> {
     /// Check any attribute.
     fn check_attributes(&self, item: &hir::Item, target: Target) {
-        self.tcx.trans_fn_attrs(self.tcx.hir.local_def_id(item.id));
+        if target == Target::Fn {
+            self.tcx.trans_fn_attrs(self.tcx.hir.local_def_id(item.id));
+        } else if let Some(a) = item.attrs.iter().find(|a| a.check_name("target_feature")) {
+            self.tcx.sess.struct_span_err(a.span, "attribute should be applied to a function")
+                .span_label(item.span, "not a function")
+                .emit();
+        }
 
         for attr in &item.attrs {
             if let Some(name) = attr.name() {