mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 18:27:37 +00:00

In the desugaring of `assert!`, we now expand to a `match` expression instead of `if !cond {..}`. The span of incorrect conditions will point only at the expression, and not the whole `assert!` invocation. ``` error[E0308]: mismatched types --> $DIR/issue-14091.rs:2:13 | LL | assert!(1,1); | ^ expected `bool`, found integer ``` We no longer mention the expression needing to implement the `Not` trait. ``` error[E0308]: mismatched types --> $DIR/issue-14091-2.rs:15:13 | LL | assert!(x, x); | ^ expected `bool`, found `BytePos` ``` `assert!(val)` now desugars to: ```rust match val { true => {}, _ => $crate::panic::panic_2021!(), } ``` Fix #122159. We make some minor changes to some diagnostics to avoid span overlap on type mismatch or inverted "expected"/"found" on type errors. We remove some unnecessary parens from core, alloc and miri. address review comments
48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
error[E0080]: evaluation panicked: assertion failed: std::mem::size_of::<T>() == 0
|
|
--> $DIR/const-expr-generic-err.rs:4:21
|
|
|
|
|
LL | const { assert!(std::mem::size_of::<T>() == 0); }
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `foo::<i32>::{constant#0}` failed here
|
|
|
|
note: erroneous constant encountered
|
|
--> $DIR/const-expr-generic-err.rs:4:5
|
|
|
|
|
LL | const { assert!(std::mem::size_of::<T>() == 0); }
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
note: the above error was encountered while instantiating `fn foo::<i32>`
|
|
--> $DIR/const-expr-generic-err.rs:12:5
|
|
|
|
|
LL | foo::<i32>();
|
|
| ^^^^^^^^^^^^
|
|
|
|
error[E0080]: attempt to compute `0_usize - 1_usize`, which would overflow
|
|
--> $DIR/const-expr-generic-err.rs:8:13
|
|
|
|
|
LL | const { N - 1 }
|
|
| ^^^^^ evaluation of `bar::<0>::{constant#0}` failed here
|
|
|
|
note: erroneous constant encountered
|
|
--> $DIR/const-expr-generic-err.rs:8:5
|
|
|
|
|
LL | const { N - 1 }
|
|
| ^^^^^^^^^^^^^^^
|
|
|
|
note: erroneous constant encountered
|
|
--> $DIR/const-expr-generic-err.rs:8:5
|
|
|
|
|
LL | const { N - 1 }
|
|
| ^^^^^^^^^^^^^^^
|
|
|
|
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
|
|
note: the above error was encountered while instantiating `fn bar::<0>`
|
|
--> $DIR/const-expr-generic-err.rs:13:5
|
|
|
|
|
LL | bar::<0>();
|
|
| ^^^^^^^^^^
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0080`.
|