07e7823c01
If a symbol name can only be imported from one place for a type, and as long as it was not glob-imported anywhere in the current crate, we can trim its printed path and print only the name. This has wide implications on error messages with types, for example, shortening `std::vec::Vec` to just `Vec`, as long as there is no other `Vec` importable anywhere. This adds a new '-Z trim-diagnostic-paths=false' option to control this feature. On the good path, with no diagnosis printed, we should try to avoid issuing this query, so we need to prevent trimmed_def_paths query on several cases. This change also relies on a previous commit that differentiates between `Debug` and `Display` on various rustc types, where the latter is trimmed and presented to the user and the former is not.
78 lines
2.3 KiB
Plaintext
78 lines
2.3 KiB
Plaintext
error[E0425]: cannot find value `y` in this scope
|
|
--> $DIR/error-festival.rs:14:5
|
|
|
|
|
LL | y = 2;
|
|
| ^ help: a local variable with a similar name exists: `x`
|
|
|
|
error[E0603]: constant `FOO` is private
|
|
--> $DIR/error-festival.rs:22:10
|
|
|
|
|
LL | foo::FOO;
|
|
| ^^^ private constant
|
|
|
|
|
note: the constant `FOO` is defined here
|
|
--> $DIR/error-festival.rs:7:5
|
|
|
|
|
LL | const FOO: u32 = 0;
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
|
|
error[E0368]: binary assignment operation `+=` cannot be applied to type `&str`
|
|
--> $DIR/error-festival.rs:12:5
|
|
|
|
|
LL | x += 2;
|
|
| -^^^^^
|
|
| |
|
|
| cannot use `+=` on type `&str`
|
|
|
|
error[E0599]: no method named `z` found for reference `&str` in the current scope
|
|
--> $DIR/error-festival.rs:16:7
|
|
|
|
|
LL | x.z();
|
|
| ^ method not found in `&str`
|
|
|
|
error[E0600]: cannot apply unary operator `!` to type `Question`
|
|
--> $DIR/error-festival.rs:19:5
|
|
|
|
|
LL | !Question::Yes;
|
|
| ^^^^^^^^^^^^^^ cannot apply unary operator `!`
|
|
|
|
|
= note: an implementation of `std::ops::Not` might be missing for `Question`
|
|
|
|
error[E0604]: only `u8` can be cast as `char`, not `u32`
|
|
--> $DIR/error-festival.rs:25:5
|
|
|
|
|
LL | 0u32 as char;
|
|
| ^^^^^^^^^^^^ invalid cast
|
|
|
|
error[E0605]: non-primitive cast: `u8` as `Vec<u8>`
|
|
--> $DIR/error-festival.rs:29:5
|
|
|
|
|
LL | x as Vec<u8>;
|
|
| ^^^^^^^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object
|
|
|
|
error[E0054]: cannot cast as `bool`
|
|
--> $DIR/error-festival.rs:33:24
|
|
|
|
|
LL | let x_is_nonzero = x as bool;
|
|
| ^^^^^^^^^ help: compare with zero instead: `x != 0`
|
|
|
|
error[E0606]: casting `&u8` as `u32` is invalid
|
|
--> $DIR/error-festival.rs:37:18
|
|
|
|
|
LL | let y: u32 = x as u32;
|
|
| -^^^^^^^
|
|
| |
|
|
| cannot cast `&u8` as `u32`
|
|
| help: dereference the expression: `*x`
|
|
|
|
error[E0607]: cannot cast thin pointer `*const u8` to fat pointer `*const [u8]`
|
|
--> $DIR/error-festival.rs:41:5
|
|
|
|
|
LL | v as *const [u8];
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
error: aborting due to 10 previous errors
|
|
|
|
Some errors have detailed explanations: E0054, E0368, E0425, E0599, E0600, E0603, E0604, E0605, E0606...
|
|
For more information about an error, try `rustc --explain E0054`.
|