mirror of
https://github.com/rust-lang/rust.git
synced 2025-11-04 23:15:28 +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
42 lines
1.5 KiB
Plaintext
42 lines
1.5 KiB
Plaintext
error[E0080]: evaluation panicked: assertion failed: std::mem::size_of::<T>() == 0
|
|
--> $DIR/post_monomorphization_error_backtrace.rs:6:31
|
|
|
|
|
LL | const V: () = assert!(std::mem::size_of::<T>() == 0);
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `assert_zst::F::<u32>::V` failed here
|
|
|
|
note: erroneous constant encountered
|
|
--> $DIR/post_monomorphization_error_backtrace.rs:14:5
|
|
|
|
|
LL | F::<T>::V;
|
|
| ^^^^^^^^^
|
|
|
|
note: the above error was encountered while instantiating `fn assert_zst::<u32>`
|
|
--> $DIR/post_monomorphization_error_backtrace.rs:21:5
|
|
|
|
|
LL | assert_zst::<U>()
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
error[E0080]: evaluation panicked: assertion failed: std::mem::size_of::<T>() == 0
|
|
--> $DIR/post_monomorphization_error_backtrace.rs:6:31
|
|
|
|
|
LL | const V: () = assert!(std::mem::size_of::<T>() == 0);
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `assert_zst::F::<i32>::V` failed here
|
|
|
|
note: erroneous constant encountered
|
|
--> $DIR/post_monomorphization_error_backtrace.rs:14:5
|
|
|
|
|
LL | F::<T>::V;
|
|
| ^^^^^^^^^
|
|
|
|
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
|
|
note: the above error was encountered while instantiating `fn assert_zst::<i32>`
|
|
--> $DIR/post_monomorphization_error_backtrace.rs:21:5
|
|
|
|
|
LL | assert_zst::<U>()
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0080`.
|