diff options
| author | est31 <MTest31@outlook.com> | 2022-02-21 08:27:24 +0100 |
|---|---|---|
| committer | est31 <MTest31@outlook.com> | 2022-02-21 08:59:39 +0100 |
| commit | 76ea56667703ac06689ff1d6fba5d170fa7392a7 (patch) | |
| tree | 9ac376f716daa1c81e1285bc7bdf837b0a064617 /src/test/ui | |
| parent | c1aa85475cf5623caf50f7ef3b62903bb084e518 (diff) | |
| download | rust-76ea56667703ac06689ff1d6fba5d170fa7392a7.tar.gz rust-76ea56667703ac06689ff1d6fba5d170fa7392a7.zip | |
Better error if the user tries to do assignment ... else
Diffstat (limited to 'src/test/ui')
| -rw-r--r-- | src/test/ui/let-else/let-else-destructuring.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/let-else/let-else-destructuring.stderr | 17 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/ui/let-else/let-else-destructuring.rs b/src/test/ui/let-else/let-else-destructuring.rs new file mode 100644 index 00000000000..9a09c414ac8 --- /dev/null +++ b/src/test/ui/let-else/let-else-destructuring.rs @@ -0,0 +1,18 @@ +#![feature(let_else)] +#[derive(Debug)] +enum Foo { + Done, + Nested(Option<&'static Foo>), +} + +fn walk(mut value: &Foo) { + loop { + println!("{:?}", value); + &Foo::Nested(Some(value)) = value else { break }; //~ ERROR invalid left-hand side of assignment + //~^ERROR <assignment> ... else { ... } is not allowed + } +} + +fn main() { + walk(&Foo::Done); +} diff --git a/src/test/ui/let-else/let-else-destructuring.stderr b/src/test/ui/let-else/let-else-destructuring.stderr new file mode 100644 index 00000000000..95efb711682 --- /dev/null +++ b/src/test/ui/let-else/let-else-destructuring.stderr @@ -0,0 +1,17 @@ +error: <assignment> ... else { ... } is not allowed + --> $DIR/let-else-destructuring.rs:11:9 + | +LL | &Foo::Nested(Some(value)) = value else { break }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error[E0070]: invalid left-hand side of assignment + --> $DIR/let-else-destructuring.rs:11:35 + | +LL | &Foo::Nested(Some(value)) = value else { break }; + | ------------------------- ^ + | | + | cannot assign to this expression + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0070`. |
