summaryrefslogtreecommitdiffstats
path: root/src/test/ui/dollar-crate
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/dollar-crate')
-rw-r--r--src/test/ui/dollar-crate/dollar-crate-is-keyword-2.rs13
-rw-r--r--src/test/ui/dollar-crate/dollar-crate-is-keyword-2.stderr37
-rw-r--r--src/test/ui/dollar-crate/dollar-crate-is-keyword.rs17
-rw-r--r--src/test/ui/dollar-crate/dollar-crate-is-keyword.stderr46
4 files changed, 113 insertions, 0 deletions
diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.rs b/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.rs
new file mode 100644
index 000000000..bbab6f877
--- /dev/null
+++ b/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.rs
@@ -0,0 +1,13 @@
+mod a {}
+
+macro_rules! m {
+ () => {
+ use a::$crate; //~ ERROR unresolved import `a::$crate`
+ use a::$crate::b; //~ ERROR `$crate` in paths can only be used in start position
+ type A = a::$crate; //~ ERROR `$crate` in paths can only be used in start position
+ }
+}
+
+m!();
+
+fn main() {}
diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.stderr b/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.stderr
new file mode 100644
index 000000000..d46029710
--- /dev/null
+++ b/src/test/ui/dollar-crate/dollar-crate-is-keyword-2.stderr
@@ -0,0 +1,37 @@
+error[E0433]: failed to resolve: `$crate` in paths can only be used in start position
+ --> $DIR/dollar-crate-is-keyword-2.rs:6:16
+ |
+LL | use a::$crate::b;
+ | ^^^^^^ `$crate` in paths can only be used in start position
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0432]: unresolved import `a::$crate`
+ --> $DIR/dollar-crate-is-keyword-2.rs:5:13
+ |
+LL | use a::$crate;
+ | ^^^^^^^^^ no `$crate` in `a`
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0433]: failed to resolve: `$crate` in paths can only be used in start position
+ --> $DIR/dollar-crate-is-keyword-2.rs:7:21
+ |
+LL | type A = a::$crate;
+ | ^^^^^^ `$crate` in paths can only be used in start position
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0432, E0433.
+For more information about an error, try `rustc --explain E0432`.
diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword.rs b/src/test/ui/dollar-crate/dollar-crate-is-keyword.rs
new file mode 100644
index 000000000..d625163dc
--- /dev/null
+++ b/src/test/ui/dollar-crate/dollar-crate-is-keyword.rs
@@ -0,0 +1,17 @@
+macro_rules! m {
+ () => {
+ // Avoid having more than one `$crate`-named item in the same module,
+ // as even though they error, they still parse as `$crate` and conflict.
+ mod foo {
+ struct $crate {} //~ ERROR expected identifier, found reserved identifier `$crate`
+ }
+
+ use $crate; //~ ERROR `$crate` may not be imported
+ use $crate as $crate; //~ ERROR expected identifier, found reserved identifier `$crate`
+ //~^ ERROR `$crate` may not be imported
+ }
+}
+
+m!();
+
+fn main() {}
diff --git a/src/test/ui/dollar-crate/dollar-crate-is-keyword.stderr b/src/test/ui/dollar-crate/dollar-crate-is-keyword.stderr
new file mode 100644
index 000000000..b02782230
--- /dev/null
+++ b/src/test/ui/dollar-crate/dollar-crate-is-keyword.stderr
@@ -0,0 +1,46 @@
+error: expected identifier, found reserved identifier `$crate`
+ --> $DIR/dollar-crate-is-keyword.rs:6:20
+ |
+LL | struct $crate {}
+ | ^^^^^^ expected identifier, found reserved identifier
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: expected identifier, found reserved identifier `$crate`
+ --> $DIR/dollar-crate-is-keyword.rs:10:23
+ |
+LL | use $crate as $crate;
+ | ^^^^^^ expected identifier, found reserved identifier
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: `$crate` may not be imported
+ --> $DIR/dollar-crate-is-keyword.rs:9:9
+ |
+LL | use $crate;
+ | ^^^^^^^^^^^
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: `$crate` may not be imported
+ --> $DIR/dollar-crate-is-keyword.rs:10:9
+ |
+LL | use $crate as $crate;
+ | ^^^^^^^^^^^^^^^^^^^^^
+...
+LL | m!();
+ | ---- in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 4 previous errors
+