about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAaron Hill <aa1ronham@gmail.com>2021-07-17 08:31:13 -0500
committerAaron Hill <aa1ronham@gmail.com>2021-07-17 23:03:58 -0500
commit1c1c7949ab6a8d4150b7e645ae4779677e86ebd1 (patch)
treedb75cbdc7f3fcf727053a018cf198f63966401da
parent7ca089c6d2e834ea007d7a62b8bbbe0c880de4a2 (diff)
downloadrust-1c1c7949ab6a8d4150b7e645ae4779677e86ebd1.tar.gz
rust-1c1c7949ab6a8d4150b7e645ae4779677e86ebd1.zip
Add test for `#[allow]` for warnings on attribute macro
-rw-r--r--src/test/ui/proc-macro/auxiliary/call-deprecated.rs19
-rw-r--r--src/test/ui/proc-macro/call-deprecated.rs34
-rw-r--r--src/test/ui/proc-macro/call-deprecated.stderr16
3 files changed, 69 insertions, 0 deletions
diff --git a/src/test/ui/proc-macro/auxiliary/call-deprecated.rs b/src/test/ui/proc-macro/auxiliary/call-deprecated.rs
new file mode 100644
index 00000000000..2f484809a5c
--- /dev/null
+++ b/src/test/ui/proc-macro/auxiliary/call-deprecated.rs
@@ -0,0 +1,19 @@
+// force-host
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+use proc_macro::*;
+
+#[proc_macro_attribute]
+#[deprecated(since = "1.0.0", note = "test")]
+pub fn attr(_: TokenStream, input: TokenStream) -> TokenStream {
+    input
+}
+
+#[proc_macro_attribute]
+#[deprecated(since = "1.0.0", note = "test")]
+pub fn attr_remove(_: TokenStream, _: TokenStream) -> TokenStream {
+    TokenStream::new()
+}
diff --git a/src/test/ui/proc-macro/call-deprecated.rs b/src/test/ui/proc-macro/call-deprecated.rs
new file mode 100644
index 00000000000..b92cc23638a
--- /dev/null
+++ b/src/test/ui/proc-macro/call-deprecated.rs
@@ -0,0 +1,34 @@
+// check-pass
+// aux-build:call-deprecated.rs
+
+extern crate call_deprecated;
+
+// These first two `#[allow(deprecated)]` attributes
+// do nothing, since the AST nodes for `First` and `Second`
+// haven't been been assigned a `NodeId`.
+// See #63221 for a discussion about how we should
+// handle the interaction of 'inert' attributes and
+// proc-macro attributes.
+
+#[allow(deprecated)]
+#[call_deprecated::attr] //~ WARN use of deprecated macro
+struct First;
+
+#[allow(deprecated)]
+#[call_deprecated::attr_remove] //~ WARN use of deprecated macro
+struct Second;
+
+#[allow(deprecated)]
+mod bar {
+    #[allow(deprecated)]
+    #[call_deprecated::attr]
+    struct Third;
+
+    #[allow(deprecated)]
+    #[call_deprecated::attr_remove]
+    struct Fourth;
+}
+
+
+fn main() {
+}
diff --git a/src/test/ui/proc-macro/call-deprecated.stderr b/src/test/ui/proc-macro/call-deprecated.stderr
new file mode 100644
index 00000000000..3506f9a16a3
--- /dev/null
+++ b/src/test/ui/proc-macro/call-deprecated.stderr
@@ -0,0 +1,16 @@
+warning: use of deprecated macro `call_deprecated::attr`: test
+  --> $DIR/call-deprecated.rs:14:3
+   |
+LL | #[call_deprecated::attr]
+   |   ^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: `#[warn(deprecated)]` on by default
+
+warning: use of deprecated macro `call_deprecated::attr_remove`: test
+  --> $DIR/call-deprecated.rs:18:3
+   |
+LL | #[call_deprecated::attr_remove]
+   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+warning: 2 warnings emitted
+