diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2024-03-17 20:46:36 +0000 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2025-08-12 16:30:48 +0000 |
| commit | c439a59dbd275aef9bc24c7172e2111ccc3794c3 (patch) | |
| tree | 9c70517c726c8c79d9bbb9c18aedea0e9d32ac47 /compiler/rustc_codegen_llvm/src | |
| parent | d9dba3a55476ae2da5d4e5bce8a81b341c675750 (diff) | |
| download | rust-c439a59dbd275aef9bc24c7172e2111ccc3794c3.tar.gz rust-c439a59dbd275aef9bc24c7172e2111ccc3794c3.zip | |
Change the desugaring of `assert!` for better error output
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
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions
