about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2021-02-21 16:32:38 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2021-03-14 18:10:29 +0300
commita4cc3cae04525c7fd6edc8a4301a4034c82fdfad (patch)
tree3b7942dd5f982fcc41cf3d88b2a6911204e2df32 /src/test
parent84c08f82b46986fcd5cbd1a637582bd1325fa970 (diff)
downloadrust-a4cc3cae04525c7fd6edc8a4301a4034c82fdfad.tar.gz
rust-a4cc3cae04525c7fd6edc8a4301a4034c82fdfad.zip
expand: Resolve and expand inner attributes on out-of-line modules
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/conditional-compilation/inner-cfg-non-inline-mod.rs7
-rw-r--r--src/test/ui/conditional-compilation/module_with_cfg.rs3
-rw-r--r--src/test/ui/proc-macro/inner-attr-non-inline-mod.rs18
-rw-r--r--src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr40
-rw-r--r--src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout76
-rw-r--r--src/test/ui/proc-macro/module_with_attrs.rs4
6 files changed, 148 insertions, 0 deletions
diff --git a/src/test/ui/conditional-compilation/inner-cfg-non-inline-mod.rs b/src/test/ui/conditional-compilation/inner-cfg-non-inline-mod.rs
new file mode 100644
index 00000000000..af5a6462e8a
--- /dev/null
+++ b/src/test/ui/conditional-compilation/inner-cfg-non-inline-mod.rs
@@ -0,0 +1,7 @@
+// check-pass
+
+mod module_with_cfg;
+
+mod module_with_cfg {} // Ok, the module above is configured away by an inner attribute.
+
+fn main() {}
diff --git a/src/test/ui/conditional-compilation/module_with_cfg.rs b/src/test/ui/conditional-compilation/module_with_cfg.rs
new file mode 100644
index 00000000000..56c4baadf22
--- /dev/null
+++ b/src/test/ui/conditional-compilation/module_with_cfg.rs
@@ -0,0 +1,3 @@
+// ignore-test
+
+#![cfg_attr(all(), cfg(FALSE))]
diff --git a/src/test/ui/proc-macro/inner-attr-non-inline-mod.rs b/src/test/ui/proc-macro/inner-attr-non-inline-mod.rs
new file mode 100644
index 00000000000..30c2666df47
--- /dev/null
+++ b/src/test/ui/proc-macro/inner-attr-non-inline-mod.rs
@@ -0,0 +1,18 @@
+// compile-flags: -Z span-debug
+// error-pattern:custom inner attributes are unstable
+// error-pattern:inner macro attributes are unstable
+// error-pattern:this was previously accepted
+// aux-build:test-macros.rs
+
+#![no_std] // Don't load unnecessary hygiene information from std
+extern crate std;
+
+#[macro_use]
+extern crate test_macros;
+
+#[deny(unused_attributes)]
+mod module_with_attrs;
+//~^ ERROR non-inline modules in proc macro input are unstable
+//~| ERROR custom inner attributes are unstable
+
+fn main() {}
diff --git a/src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr b/src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr
new file mode 100644
index 00000000000..4286896dfc3
--- /dev/null
+++ b/src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr
@@ -0,0 +1,40 @@
+error[E0658]: inner macro attributes are unstable
+  --> $DIR/module_with_attrs.rs:4:4
+   |
+LL | #![print_attr]
+   |    ^^^^^^^^^^
+   |
+   = note: see issue #54726 <https://github.com/rust-lang/rust/issues/54726> for more information
+   = help: add `#![feature(custom_inner_attributes)]` to the crate attributes to enable
+
+error[E0658]: non-inline modules in proc macro input are unstable
+  --> $DIR/inner-attr-non-inline-mod.rs:14:1
+   |
+LL | mod module_with_attrs;
+   | ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #54727 <https://github.com/rust-lang/rust/issues/54727> for more information
+   = help: add `#![feature(proc_macro_hygiene)]` to the crate attributes to enable
+
+error[E0658]: custom inner attributes are unstable
+  --> $DIR/inner-attr-non-inline-mod.rs:14:1
+   |
+LL | mod module_with_attrs;
+   | ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #54726 <https://github.com/rust-lang/rust/issues/54726> for more information
+   = help: add `#![feature(custom_inner_attributes)]` to the crate attributes to enable
+
+error: custom inner attributes are unstable
+  --> $DIR/module_with_attrs.rs:3:4
+   |
+LL | #![rustfmt::skip]
+   |    ^^^^^^^^^^^^^
+   |
+   = note: `#[deny(soft_unstable)]` on by default
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
+   = note: for more information, see issue #64266 <https://github.com/rust-lang/rust/issues/64266>
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout b/src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout
new file mode 100644
index 00000000000..dbef342ef24
--- /dev/null
+++ b/src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout
@@ -0,0 +1,76 @@
+PRINT-ATTR INPUT (DISPLAY): #[deny(unused_attributes)] mod module_with_attrs { # ! [rustfmt :: skip] }
+PRINT-ATTR INPUT (DEBUG): TokenStream [
+    Punct {
+        ch: '#',
+        spacing: Alone,
+        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+    },
+    Group {
+        delimiter: Bracket,
+        stream: TokenStream [
+            Ident {
+                ident: "deny",
+                span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+            },
+            Group {
+                delimiter: Parenthesis,
+                stream: TokenStream [
+                    Ident {
+                        ident: "unused_attributes",
+                        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+                    },
+                ],
+                span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+            },
+        ],
+        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+    },
+    Ident {
+        ident: "mod",
+        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+    },
+    Ident {
+        ident: "module_with_attrs",
+        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+    },
+    Group {
+        delimiter: Brace,
+        stream: TokenStream [
+            Punct {
+                ch: '#',
+                spacing: Joint,
+                span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+            },
+            Punct {
+                ch: '!',
+                spacing: Alone,
+                span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+            },
+            Group {
+                delimiter: Bracket,
+                stream: TokenStream [
+                    Ident {
+                        ident: "rustfmt",
+                        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+                    },
+                    Punct {
+                        ch: ':',
+                        spacing: Joint,
+                        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+                    },
+                    Punct {
+                        ch: ':',
+                        spacing: Alone,
+                        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+                    },
+                    Ident {
+                        ident: "skip",
+                        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+                    },
+                ],
+                span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+            },
+        ],
+        span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
+    },
+]
diff --git a/src/test/ui/proc-macro/module_with_attrs.rs b/src/test/ui/proc-macro/module_with_attrs.rs
new file mode 100644
index 00000000000..63e66a62ac3
--- /dev/null
+++ b/src/test/ui/proc-macro/module_with_attrs.rs
@@ -0,0 +1,4 @@
+// ignore-test
+
+#![rustfmt::skip]
+#![print_attr]