summaryrefslogtreecommitdiffstats
path: root/src/test/ui/proc-macro/proc-macro-gates.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/proc-macro/proc-macro-gates.rs')
-rw-r--r--src/test/ui/proc-macro/proc-macro-gates.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/test/ui/proc-macro/proc-macro-gates.rs b/src/test/ui/proc-macro/proc-macro-gates.rs
new file mode 100644
index 000000000..e2cf4e739
--- /dev/null
+++ b/src/test/ui/proc-macro/proc-macro-gates.rs
@@ -0,0 +1,53 @@
+// aux-build:test-macros.rs
+// gate-test-proc_macro_hygiene
+
+#![feature(stmt_expr_attributes)]
+
+#[macro_use]
+extern crate test_macros;
+
+fn _test_inner() {
+ #![empty_attr] //~ ERROR: inner macro attributes are unstable
+}
+
+mod _test2_inner {
+ #![empty_attr] //~ ERROR: inner macro attributes are unstable
+}
+
+#[empty_attr = "y"] //~ ERROR: key-value macro attributes are not supported
+fn _test3() {}
+
+fn attrs() {
+ // Statement, item
+ #[empty_attr] // OK
+ struct S;
+
+ // Statement, macro
+ #[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
+ println!();
+
+ // Statement, semi
+ #[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
+ S;
+
+ // Statement, local
+ #[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
+ let _x = 2;
+
+ // Expr
+ let _x = #[identity_attr] 2; //~ ERROR: custom attributes cannot be applied to expressions
+
+ // Opt expr
+ let _x = [#[identity_attr] 2]; //~ ERROR: custom attributes cannot be applied to expressions
+
+ // Expr macro
+ let _x = #[identity_attr] println!();
+ //~^ ERROR: custom attributes cannot be applied to expressions
+}
+
+fn test_case() {
+ #![test] //~ ERROR inner macro attributes are unstable
+ //~| WARN this was previously accepted
+}
+
+fn main() {}