Add a few basic tests for if-let guards
This commit is contained in:
parent
61e69bc3fc
commit
0917260368
@ -10,6 +10,9 @@
|
||||
// Thus, `&'_ u8` should be included in type signature
|
||||
// of the underlying generator.
|
||||
|
||||
#![feature(if_let_guard)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
async fn f() -> u8 { 1 }
|
||||
async fn foo() -> [bool; 10] { [false; 10] }
|
||||
|
||||
@ -36,8 +39,16 @@ async fn i(x: u8) {
|
||||
}
|
||||
}
|
||||
|
||||
async fn j(x: u8) {
|
||||
match x {
|
||||
y if let (1, 42) = (f().await, y) => (),
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _ = g(10);
|
||||
let _ = h(9);
|
||||
let _ = i(8);
|
||||
let _ = j(7);
|
||||
}
|
||||
|
10
src/test/ui/rfc-2294-if-let-guard/bindings.rs
Normal file
10
src/test/ui/rfc-2294-if-let-guard/bindings.rs
Normal file
@ -0,0 +1,10 @@
|
||||
#![feature(if_let_guard)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
fn main() {
|
||||
match Some(None) {
|
||||
Some(x) if let Some(y) = x => (x, y),
|
||||
_ => y, //~ ERROR cannot find value `y`
|
||||
}
|
||||
y //~ ERROR cannot find value `y`
|
||||
}
|
15
src/test/ui/rfc-2294-if-let-guard/bindings.stderr
Normal file
15
src/test/ui/rfc-2294-if-let-guard/bindings.stderr
Normal file
@ -0,0 +1,15 @@
|
||||
error[E0425]: cannot find value `y` in this scope
|
||||
--> $DIR/bindings.rs:7:14
|
||||
|
|
||||
LL | _ => y,
|
||||
| ^ not found in this scope
|
||||
|
||||
error[E0425]: cannot find value `y` in this scope
|
||||
--> $DIR/bindings.rs:9:5
|
||||
|
|
||||
LL | y
|
||||
| ^ not found in this scope
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0425`.
|
@ -1,5 +1,5 @@
|
||||
error: no rules expected the token `let`
|
||||
--> $DIR/feature-gate.rs:81:15
|
||||
--> $DIR/feature-gate.rs:80:15
|
||||
|
|
||||
LL | macro_rules! use_expr {
|
||||
| --------------------- when calling this macro
|
||||
@ -17,7 +17,7 @@ LL | () if let 0 = 1 => {}
|
||||
= help: add `#![feature(if_let_guard)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `if let` guard is not implemented
|
||||
--> $DIR/feature-gate.rs:77:12
|
||||
--> $DIR/feature-gate.rs:76:12
|
||||
|
|
||||
LL | () if let 0 = 1 => {}
|
||||
| ^^^^^^^^^^^^
|
||||
@ -26,7 +26,7 @@ LL | () if let 0 = 1 => {}
|
||||
= help: add `#![feature(if_let_guard)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:11:16
|
||||
--> $DIR/feature-gate.rs:10:16
|
||||
|
|
||||
LL | () if (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -35,7 +35,7 @@ LL | () if (let 0 = 1) => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:15:18
|
||||
--> $DIR/feature-gate.rs:14:18
|
||||
|
|
||||
LL | () if (((let 0 = 1))) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -44,7 +44,7 @@ LL | () if (((let 0 = 1))) => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:19:23
|
||||
--> $DIR/feature-gate.rs:18:23
|
||||
|
|
||||
LL | () if true && let 0 = 1 => {}
|
||||
| ^^^^^^^^^
|
||||
@ -53,7 +53,7 @@ LL | () if true && let 0 = 1 => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:23:15
|
||||
--> $DIR/feature-gate.rs:22:15
|
||||
|
|
||||
LL | () if let 0 = 1 && true => {}
|
||||
| ^^^^^^^^^
|
||||
@ -62,7 +62,7 @@ LL | () if let 0 = 1 && true => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:27:16
|
||||
--> $DIR/feature-gate.rs:26:16
|
||||
|
|
||||
LL | () if (let 0 = 1) && true => {}
|
||||
| ^^^^^^^^^
|
||||
@ -71,7 +71,7 @@ LL | () if (let 0 = 1) && true => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:31:24
|
||||
--> $DIR/feature-gate.rs:30:24
|
||||
|
|
||||
LL | () if true && (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -80,7 +80,7 @@ LL | () if true && (let 0 = 1) => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:35:16
|
||||
--> $DIR/feature-gate.rs:34:16
|
||||
|
|
||||
LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -89,7 +89,7 @@ LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:35:31
|
||||
--> $DIR/feature-gate.rs:34:31
|
||||
|
|
||||
LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -98,7 +98,7 @@ LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:41:15
|
||||
--> $DIR/feature-gate.rs:40:15
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -107,7 +107,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:41:28
|
||||
--> $DIR/feature-gate.rs:40:28
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -116,7 +116,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:41:42
|
||||
--> $DIR/feature-gate.rs:40:42
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -125,7 +125,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:41:55
|
||||
--> $DIR/feature-gate.rs:40:55
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -134,7 +134,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:41:68
|
||||
--> $DIR/feature-gate.rs:40:68
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -143,7 +143,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:53:15
|
||||
--> $DIR/feature-gate.rs:52:15
|
||||
|
|
||||
LL | () if let Range { start: _, end: _ } = (true..true) && false => {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -152,7 +152,7 @@ LL | () if let Range { start: _, end: _ } = (true..true) && false => {}
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:69:16
|
||||
--> $DIR/feature-gate.rs:68:16
|
||||
|
|
||||
LL | use_expr!((let 0 = 1 && 0 == 0));
|
||||
| ^^^^^^^^^
|
||||
@ -161,7 +161,7 @@ LL | use_expr!((let 0 = 1 && 0 == 0));
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `let` expressions in this position are experimental
|
||||
--> $DIR/feature-gate.rs:72:16
|
||||
--> $DIR/feature-gate.rs:71:16
|
||||
|
|
||||
LL | use_expr!((let 0 = 1));
|
||||
| ^^^^^^^^^
|
||||
@ -170,7 +170,7 @@ LL | use_expr!((let 0 = 1));
|
||||
= help: add `#![feature(let_chains)]` to the crate attributes to enable
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:11:16
|
||||
--> $DIR/feature-gate.rs:10:16
|
||||
|
|
||||
LL | () if (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -179,7 +179,7 @@ LL | () if (let 0 = 1) => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:15:18
|
||||
--> $DIR/feature-gate.rs:14:18
|
||||
|
|
||||
LL | () if (((let 0 = 1))) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -188,7 +188,7 @@ LL | () if (((let 0 = 1))) => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:19:23
|
||||
--> $DIR/feature-gate.rs:18:23
|
||||
|
|
||||
LL | () if true && let 0 = 1 => {}
|
||||
| ^^^^^^^^^
|
||||
@ -197,7 +197,7 @@ LL | () if true && let 0 = 1 => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:23:15
|
||||
--> $DIR/feature-gate.rs:22:15
|
||||
|
|
||||
LL | () if let 0 = 1 && true => {}
|
||||
| ^^^^^^^^^
|
||||
@ -206,7 +206,7 @@ LL | () if let 0 = 1 && true => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:27:16
|
||||
--> $DIR/feature-gate.rs:26:16
|
||||
|
|
||||
LL | () if (let 0 = 1) && true => {}
|
||||
| ^^^^^^^^^
|
||||
@ -215,7 +215,7 @@ LL | () if (let 0 = 1) && true => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:31:24
|
||||
--> $DIR/feature-gate.rs:30:24
|
||||
|
|
||||
LL | () if true && (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -224,7 +224,7 @@ LL | () if true && (let 0 = 1) => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:35:16
|
||||
--> $DIR/feature-gate.rs:34:16
|
||||
|
|
||||
LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -233,7 +233,7 @@ LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:35:31
|
||||
--> $DIR/feature-gate.rs:34:31
|
||||
|
|
||||
LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -242,7 +242,7 @@ LL | () if (let 0 = 1) && (let 0 = 1) => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:41:15
|
||||
--> $DIR/feature-gate.rs:40:15
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -251,7 +251,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:41:28
|
||||
--> $DIR/feature-gate.rs:40:28
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -260,7 +260,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:41:42
|
||||
--> $DIR/feature-gate.rs:40:42
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -269,7 +269,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:41:55
|
||||
--> $DIR/feature-gate.rs:40:55
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -278,7 +278,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:41:68
|
||||
--> $DIR/feature-gate.rs:40:68
|
||||
|
|
||||
LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) => {}
|
||||
| ^^^^^^^^^
|
||||
@ -287,7 +287,7 @@ LL | () if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 =
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:53:15
|
||||
--> $DIR/feature-gate.rs:52:15
|
||||
|
|
||||
LL | () if let Range { start: _, end: _ } = (true..true) && false => {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -296,7 +296,7 @@ LL | () if let Range { start: _, end: _ } = (true..true) && false => {}
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:69:16
|
||||
--> $DIR/feature-gate.rs:68:16
|
||||
|
|
||||
LL | use_expr!((let 0 = 1 && 0 == 0));
|
||||
| ^^^^^^^^^
|
||||
@ -305,7 +305,7 @@ LL | use_expr!((let 0 = 1 && 0 == 0));
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: `let` expressions are not supported here
|
||||
--> $DIR/feature-gate.rs:72:16
|
||||
--> $DIR/feature-gate.rs:71:16
|
||||
|
|
||||
LL | use_expr!((let 0 = 1));
|
||||
| ^^^^^^^^^
|
||||
@ -313,6 +313,6 @@ LL | use_expr!((let 0 = 1));
|
||||
= note: only supported directly in conditions of `if`- and `while`-expressions
|
||||
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||
|
||||
error: aborting due to 36 previous errors
|
||||
error: aborting due to 35 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
34
src/test/ui/rfc-2294-if-let-guard/run-pass.rs
Normal file
34
src/test/ui/rfc-2294-if-let-guard/run-pass.rs
Normal file
@ -0,0 +1,34 @@
|
||||
// run-pass
|
||||
|
||||
#![feature(if_let_guard)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
enum Foo {
|
||||
Bar,
|
||||
Baz,
|
||||
Qux(u8),
|
||||
}
|
||||
|
||||
fn bar(x: bool) -> Foo {
|
||||
if x { Foo::Baz } else { Foo::Bar }
|
||||
}
|
||||
|
||||
fn baz(x: u8) -> Foo {
|
||||
if x % 2 == 0 { Foo::Bar } else { Foo::Baz }
|
||||
}
|
||||
|
||||
fn qux(x: u8) -> Foo {
|
||||
Foo::Qux(x.rotate_left(1))
|
||||
}
|
||||
|
||||
fn main() {
|
||||
match Some((true, 3)) {
|
||||
Some((x, _)) if let Foo::Bar = bar(x) => panic!(),
|
||||
Some((_, x)) if let Foo::Baz = baz(x) => {},
|
||||
_ => panic!(),
|
||||
}
|
||||
match Some(42) {
|
||||
Some(x) if let Foo::Qux(y) = qux(x) => assert_eq!(y, 84),
|
||||
_ => panic!(),
|
||||
}
|
||||
}
|
16
src/test/ui/rfc-2294-if-let-guard/typeck.rs
Normal file
16
src/test/ui/rfc-2294-if-let-guard/typeck.rs
Normal file
@ -0,0 +1,16 @@
|
||||
#![feature(if_let_guard)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
fn ok() -> Result<Option<bool>, ()> {
|
||||
Ok(Some(true))
|
||||
}
|
||||
|
||||
fn main() {
|
||||
match ok() {
|
||||
Ok(x) if let Err(_) = x => {},
|
||||
//~^ ERROR mismatched types
|
||||
Ok(x) if let 0 = x => {},
|
||||
//~^ ERROR mismatched types
|
||||
_ => {}
|
||||
}
|
||||
}
|
21
src/test/ui/rfc-2294-if-let-guard/typeck.stderr
Normal file
21
src/test/ui/rfc-2294-if-let-guard/typeck.stderr
Normal file
@ -0,0 +1,21 @@
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/typeck.rs:10:22
|
||||
|
|
||||
LL | Ok(x) if let Err(_) = x => {},
|
||||
| ^^^^^^ expected enum `Option`, found enum `std::result::Result`
|
||||
|
|
||||
= note: expected enum `Option<bool>`
|
||||
found enum `std::result::Result<_, _>`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/typeck.rs:12:22
|
||||
|
|
||||
LL | Ok(x) if let 0 = x => {},
|
||||
| ^ expected enum `Option`, found integer
|
||||
|
|
||||
= note: expected enum `Option<bool>`
|
||||
found type `{integer}`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
22
src/test/ui/rfc-2294-if-let-guard/warns.rs
Normal file
22
src/test/ui/rfc-2294-if-let-guard/warns.rs
Normal file
@ -0,0 +1,22 @@
|
||||
#![feature(if_let_guard)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
#[deny(irrefutable_let_patterns)]
|
||||
fn irrefutable_let_guard() {
|
||||
match Some(()) {
|
||||
Some(x) if let () = x => {}
|
||||
//~^ ERROR irrefutable if-let guard
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
#[deny(unreachable_patterns)]
|
||||
fn unreachable_pattern() {
|
||||
match Some(()) {
|
||||
x if let None | None = x => {}
|
||||
//~^ ERROR unreachable pattern
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
26
src/test/ui/rfc-2294-if-let-guard/warns.stderr
Normal file
26
src/test/ui/rfc-2294-if-let-guard/warns.stderr
Normal file
@ -0,0 +1,26 @@
|
||||
error: irrefutable if-let guard
|
||||
--> $DIR/warns.rs:7:24
|
||||
|
|
||||
LL | Some(x) if let () = x => {}
|
||||
| ^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/warns.rs:4:8
|
||||
|
|
||||
LL | #[deny(irrefutable_let_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unreachable pattern
|
||||
--> $DIR/warns.rs:16:25
|
||||
|
|
||||
LL | x if let None | None = x => {}
|
||||
| ^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/warns.rs:13:8
|
||||
|
|
||||
LL | #[deny(unreachable_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
Loading…
x
Reference in New Issue
Block a user