summaryrefslogtreecommitdiffstats
path: root/src/test/ui/hygiene/prelude-import-hygiene.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/hygiene/prelude-import-hygiene.rs')
-rw-r--r--src/test/ui/hygiene/prelude-import-hygiene.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/hygiene/prelude-import-hygiene.rs b/src/test/ui/hygiene/prelude-import-hygiene.rs
new file mode 100644
index 000000000..51e7bed65
--- /dev/null
+++ b/src/test/ui/hygiene/prelude-import-hygiene.rs
@@ -0,0 +1,29 @@
+// Make sure that attribute used when injecting the prelude are resolved
+// hygienically.
+
+// check-pass
+// aux-build:not-libstd.rs
+
+//revisions: rust2015 rust2018
+//[rust2018] edition:2018
+
+// The prelude import shouldn't see these as candidates for when it's trying to
+// use the built-in macros.
+extern crate core;
+use core::prelude::v1::test as prelude_import;
+use core::prelude::v1::test as macro_use;
+
+// Should not be used for the prelude import - not a concern in the 2015 edition
+// because `std` is already declared in the crate root.
+#[cfg(rust2018)]
+extern crate not_libstd as std;
+
+#[cfg(rust2018)]
+mod x {
+ // The extern crate item should override `std` in the extern prelude.
+ fn f() {
+ std::not_in_lib_std();
+ }
+}
+
+fn main() {}