Rollup merge of #82881 - Manishearth:crate-root, r=estebank
diagnostics: Be clear about "crate root" and `::foo` paths in resolve diagnostics Various changes to make sure the diagnostics are clear about the differences in `::foo` paths across editions: - `::foo` will say "crate root" in 2015 and "list of imported crates" in 2018 - `crate::` will never reference imported crates in 2018 Fixes https://github.com/rust-lang/rust/issues/82876
This commit is contained in:
commit
3908eec60f
11 changed files with 129 additions and 13 deletions
21
src/test/ui/editions-crate-root-2015.rs
Normal file
21
src/test/ui/editions-crate-root-2015.rs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// edition:2015
|
||||
|
||||
mod inner {
|
||||
fn global_inner(_: ::nonexistant::Foo) {
|
||||
//~^ ERROR failed to resolve: maybe a missing crate `nonexistant`?
|
||||
}
|
||||
fn crate_inner(_: crate::nonexistant::Foo) {
|
||||
//~^ ERROR failed to resolve: maybe a missing crate `nonexistant`?
|
||||
}
|
||||
|
||||
fn bare_global(_: ::nonexistant) {
|
||||
//~^ ERROR cannot find type `nonexistant` in the crate root
|
||||
}
|
||||
fn bare_crate(_: crate::nonexistant) {
|
||||
//~^ ERROR cannot find type `nonexistant` in the crate root
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
}
|
||||
28
src/test/ui/editions-crate-root-2015.stderr
Normal file
28
src/test/ui/editions-crate-root-2015.stderr
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
error[E0433]: failed to resolve: maybe a missing crate `nonexistant`?
|
||||
--> $DIR/editions-crate-root-2015.rs:4:26
|
||||
|
|
||||
LL | fn global_inner(_: ::nonexistant::Foo) {
|
||||
| ^^^^^^^^^^^ maybe a missing crate `nonexistant`?
|
||||
|
||||
error[E0433]: failed to resolve: maybe a missing crate `nonexistant`?
|
||||
--> $DIR/editions-crate-root-2015.rs:7:30
|
||||
|
|
||||
LL | fn crate_inner(_: crate::nonexistant::Foo) {
|
||||
| ^^^^^^^^^^^ maybe a missing crate `nonexistant`?
|
||||
|
||||
error[E0412]: cannot find type `nonexistant` in the crate root
|
||||
--> $DIR/editions-crate-root-2015.rs:11:25
|
||||
|
|
||||
LL | fn bare_global(_: ::nonexistant) {
|
||||
| ^^^^^^^^^^^ not found in the crate root
|
||||
|
||||
error[E0412]: cannot find type `nonexistant` in the crate root
|
||||
--> $DIR/editions-crate-root-2015.rs:14:29
|
||||
|
|
||||
LL | fn bare_crate(_: crate::nonexistant) {
|
||||
| ^^^^^^^^^^^ not found in the crate root
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0412, E0433.
|
||||
For more information about an error, try `rustc --explain E0412`.
|
||||
21
src/test/ui/editions-crate-root-2018.rs
Normal file
21
src/test/ui/editions-crate-root-2018.rs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// edition:2018
|
||||
|
||||
mod inner {
|
||||
fn global_inner(_: ::nonexistant::Foo) {
|
||||
//~^ ERROR failed to resolve: could not find `nonexistant` in the list of imported crates
|
||||
}
|
||||
fn crate_inner(_: crate::nonexistant::Foo) {
|
||||
//~^ ERROR failed to resolve: could not find `nonexistant` in the crate root
|
||||
}
|
||||
|
||||
fn bare_global(_: ::nonexistant) {
|
||||
//~^ ERROR cannot find crate `nonexistant` in the list of imported crates
|
||||
}
|
||||
fn bare_crate(_: crate::nonexistant) {
|
||||
//~^ ERROR cannot find type `nonexistant` in the crate root
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
}
|
||||
28
src/test/ui/editions-crate-root-2018.stderr
Normal file
28
src/test/ui/editions-crate-root-2018.stderr
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
error[E0433]: failed to resolve: could not find `nonexistant` in the list of imported crates
|
||||
--> $DIR/editions-crate-root-2018.rs:4:26
|
||||
|
|
||||
LL | fn global_inner(_: ::nonexistant::Foo) {
|
||||
| ^^^^^^^^^^^ could not find `nonexistant` in the list of imported crates
|
||||
|
||||
error[E0433]: failed to resolve: could not find `nonexistant` in the crate root
|
||||
--> $DIR/editions-crate-root-2018.rs:7:30
|
||||
|
|
||||
LL | fn crate_inner(_: crate::nonexistant::Foo) {
|
||||
| ^^^^^^^^^^^ could not find `nonexistant` in the crate root
|
||||
|
||||
error[E0412]: cannot find crate `nonexistant` in the list of imported crates
|
||||
--> $DIR/editions-crate-root-2018.rs:11:25
|
||||
|
|
||||
LL | fn bare_global(_: ::nonexistant) {
|
||||
| ^^^^^^^^^^^ not found in the list of imported crates
|
||||
|
||||
error[E0412]: cannot find type `nonexistant` in the crate root
|
||||
--> $DIR/editions-crate-root-2018.rs:14:29
|
||||
|
|
||||
LL | fn bare_crate(_: crate::nonexistant) {
|
||||
| ^^^^^^^^^^^ not found in the crate root
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0412, E0433.
|
||||
For more information about an error, try `rustc --explain E0412`.
|
||||
|
|
@ -2,7 +2,7 @@ error[E0432]: unresolved import `E`
|
|||
--> $DIR/edition-imports-virtual-2015-gated.rs:8:5
|
||||
|
|
||||
LL | gen_gated!();
|
||||
| ^^^^^^^^^^^^^ could not find `E` in crate root
|
||||
| ^^^^^^^^^^^^^ could not find `E` in the list of imported crates
|
||||
|
|
||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Regression test for issue #63882.
|
||||
|
||||
type A = crate::r#break; //~ ERROR cannot find type `r#break` in module `crate`
|
||||
type A = crate::r#break; //~ ERROR cannot find type `r#break` in the crate root
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0412]: cannot find type `r#break` in module `crate`
|
||||
error[E0412]: cannot find type `r#break` in the crate root
|
||||
--> $DIR/raw-ident-in-path.rs:3:17
|
||||
|
|
||||
LL | type A = crate::r#break;
|
||||
| ^^^^^^^ not found in `crate`
|
||||
| ^^^^^^^ not found in the crate root
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@
|
|||
|
||||
fn main() {
|
||||
let s = ::xcrate::S;
|
||||
//~^ ERROR failed to resolve: could not find `xcrate` in crate root
|
||||
//~^ ERROR failed to resolve: could not find `xcrate` in the list of imported crates
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
error[E0433]: failed to resolve: could not find `xcrate` in crate root
|
||||
error[E0433]: failed to resolve: could not find `xcrate` in the list of imported crates
|
||||
--> $DIR/non-existent-2.rs:4:15
|
||||
|
|
||||
LL | let s = ::xcrate::S;
|
||||
| ^^^^^^ could not find `xcrate` in crate root
|
||||
| ^^^^^^ could not find `xcrate` in the list of imported crates
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue