From 76ea56667703ac06689ff1d6fba5d170fa7392a7 Mon Sep 17 00:00:00 2001 From: est31 Date: Mon, 21 Feb 2022 08:27:24 +0100 Subject: Better error if the user tries to do assignment ... else --- src/test/ui/let-else/let-else-destructuring.rs | 18 ++++++++++++++++++ src/test/ui/let-else/let-else-destructuring.stderr | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/test/ui/let-else/let-else-destructuring.rs create mode 100644 src/test/ui/let-else/let-else-destructuring.stderr (limited to 'src/test/ui') 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 ... 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: ... 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`. -- cgit 1.4.1-3-g733a5