summaryrefslogtreecommitdiffstats
path: root/src/test/ui/hygiene/cross-crate-define-and-use.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/hygiene/cross-crate-define-and-use.rs')
-rw-r--r--src/test/ui/hygiene/cross-crate-define-and-use.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/test/ui/hygiene/cross-crate-define-and-use.rs b/src/test/ui/hygiene/cross-crate-define-and-use.rs
new file mode 100644
index 000000000..94f1adff6
--- /dev/null
+++ b/src/test/ui/hygiene/cross-crate-define-and-use.rs
@@ -0,0 +1,19 @@
+// Check that a marco from another crate can define an item in one expansion
+// and use it from another, without it being visible to everyone.
+// This requires that the definition of `my_struct` preserves the hygiene
+// information for the tokens in its definition.
+
+// check-pass
+// aux-build:use_by_macro.rs
+
+#![feature(type_name_of_val)]
+extern crate use_by_macro;
+
+use use_by_macro::*;
+
+enum MyStruct {}
+my_struct!(define);
+
+fn main() {
+ let x = my_struct!(create);
+}