summaryrefslogtreecommitdiffstats
path: root/src/test/ui/imports/local-modularized-tricky-pass-2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/imports/local-modularized-tricky-pass-2.rs')
-rw-r--r--src/test/ui/imports/local-modularized-tricky-pass-2.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/test/ui/imports/local-modularized-tricky-pass-2.rs b/src/test/ui/imports/local-modularized-tricky-pass-2.rs
new file mode 100644
index 000000000..d5efbdf78
--- /dev/null
+++ b/src/test/ui/imports/local-modularized-tricky-pass-2.rs
@@ -0,0 +1,50 @@
+// check-pass
+//
+// `#[macro_export] macro_rules` that doesn't originate from macro expansions can be placed
+// into the root module soon enough to act as usual items and shadow globs and preludes.
+
+#![feature(decl_macro)]
+
+// `macro_export` shadows globs
+use inner1::*;
+
+mod inner1 {
+ pub macro exported() {}
+}
+
+exported!();
+
+mod deep {
+ fn deep() {
+ type Deeper = [u8; {
+ #[macro_export]
+ macro_rules! exported {
+ () => ( struct Б; )
+ }
+
+ 0
+ }];
+ }
+}
+
+// `macro_export` shadows std prelude
+fn main() {
+ panic!();
+}
+
+mod inner3 {
+ #[macro_export]
+ macro_rules! panic {
+ () => ( struct Г; )
+ }
+}
+
+// `macro_export` shadows builtin macros
+include!();
+
+mod inner4 {
+ #[macro_export]
+ macro_rules! include {
+ () => ( struct Д; )
+ }
+}