mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 18:15:07 +03:00
0a522ccfd9
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
174 lines
4.9 KiB
Plaintext
174 lines
4.9 KiB
Plaintext
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:5:8
|
|
|
|
|
LL | if "".is_empty() {
|
|
| ^^^^^^^^^^^^^
|
|
|
|
|
= note: `-D clippy::const-is-empty` implied by `-D warnings`
|
|
= help: to override `-D warnings` add `#[allow(clippy::const_is_empty)]`
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:8:8
|
|
|
|
|
LL | if "foobar".is_empty() {
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:14:8
|
|
|
|
|
LL | if b"".is_empty() {
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:17:8
|
|
|
|
|
LL | if b"foobar".is_empty() {
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:34:8
|
|
|
|
|
LL | if empty2.is_empty() {
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:37:8
|
|
|
|
|
LL | if non_empty2.is_empty() {
|
|
| ^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:59:13
|
|
|
|
|
LL | let _ = EMPTY_STR.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:62:13
|
|
|
|
|
LL | let _ = NON_EMPTY_STR.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:65:13
|
|
|
|
|
LL | let _ = EMPTY_BSTR.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:68:13
|
|
|
|
|
LL | let _ = NON_EMPTY_BSTR.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:71:13
|
|
|
|
|
LL | let _ = EMPTY_ARRAY.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:74:13
|
|
|
|
|
LL | let _ = EMPTY_ARRAY_REPEAT.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:77:13
|
|
|
|
|
LL | let _ = EMPTY_U8_SLICE.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:80:13
|
|
|
|
|
LL | let _ = NON_EMPTY_U8_SLICE.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:83:13
|
|
|
|
|
LL | let _ = NON_EMPTY_ARRAY.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:86:13
|
|
|
|
|
LL | let _ = NON_EMPTY_ARRAY_REPEAT.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:89:13
|
|
|
|
|
LL | let _ = EMPTY_REF_ARRAY.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:92:13
|
|
|
|
|
LL | let _ = NON_EMPTY_REF_ARRAY.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:95:13
|
|
|
|
|
LL | let _ = EMPTY_SLICE.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:98:13
|
|
|
|
|
LL | let _ = NON_EMPTY_SLICE.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:101:13
|
|
|
|
|
LL | let _ = NON_EMPTY_SLICE_REPEAT.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:107:13
|
|
|
|
|
LL | let _ = value.is_empty();
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to false
|
|
--> tests/ui/const_is_empty.rs:111:13
|
|
|
|
|
LL | let _ = x.is_empty();
|
|
| ^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:114:13
|
|
|
|
|
LL | let _ = "".is_empty();
|
|
| ^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:117:13
|
|
|
|
|
LL | let _ = b"".is_empty();
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:171:13
|
|
|
|
|
LL | let _ = val.is_empty();
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:198:17
|
|
|
|
|
LL | assert!(EMPTY_STR.is_empty());
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: this expression always evaluates to true
|
|
--> tests/ui/const_is_empty.rs:203:9
|
|
|
|
|
LL | EMPTY_STR.is_empty();
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: aborting due to 28 previous errors
|
|
|