about summary refs log tree commit diff
path: root/tests/ui/dollar-crate
diff options
context:
space:
mode:
authorAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-05 09:13:28 +0100
committerAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-11 09:32:08 +0000
commitcf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch)
tree40a88d9a46aaf3e8870676eb2538378b75a263eb /tests/ui/dollar-crate
parentca855e6e42787ecd062d81d53336fe6788ef51a9 (diff)
downloadrust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz
rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip
Move /src/test to /tests
Diffstat (limited to 'tests/ui/dollar-crate')
-rw-r--r--tests/ui/dollar-crate/dollar-crate-is-keyword-2.rs13
-rw-r--r--tests/ui/dollar-crate/dollar-crate-is-keyword-2.stderr37
-rw-r--r--tests/ui/dollar-crate/dollar-crate-is-keyword.rs17
-rw-r--r--tests/ui/dollar-crate/dollar-crate-is-keyword.stderr46
4 files changed, 113 insertions, 0 deletions
diff --git a/tests/ui/dollar-crate/dollar-crate-is-keyword-2.rs b/tests/ui/dollar-crate/dollar-crate-is-keyword-2.rs
new file mode 100644
index 00000000000..bbab6f87748
--- /dev/null
+++ b/tests/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/tests/ui/dollar-crate/dollar-crate-is-keyword-2.stderr b/tests/ui/dollar-crate/dollar-crate-is-keyword-2.stderr
new file mode 100644
index 00000000000..d46029710d6
--- /dev/null
+++ b/tests/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/tests/ui/dollar-crate/dollar-crate-is-keyword.rs b/tests/ui/dollar-crate/dollar-crate-is-keyword.rs
new file mode 100644
index 00000000000..d625163dc7e
--- /dev/null
+++ b/tests/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/tests/ui/dollar-crate/dollar-crate-is-keyword.stderr b/tests/ui/dollar-crate/dollar-crate-is-keyword.stderr
new file mode 100644
index 00000000000..b0278223074
--- /dev/null
+++ b/tests/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
+