Stabilise irrefutable if-let and while-let patterns
This stabilises RFC 2086 (https://github.com/rust-lang/rust/issues/44495). Co-Authored-By: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
b43986184b
commit
afcb938116
30 changed files with 175 additions and 239 deletions
|
|
@ -1,8 +0,0 @@
|
|||
struct Irrefutable(i32);
|
||||
|
||||
fn main() {
|
||||
let irr = Irrefutable(0);
|
||||
if let Irrefutable(x) = irr { //~ ERROR E0162
|
||||
println!("{}", x);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/E0162.rs:5:12
|
||||
|
|
||||
LL | if let Irrefutable(x) = irr { //~ ERROR E0162
|
||||
| ^^^^^^^^^^^^^^ irrefutable pattern
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0162`.
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
struct Irrefutable(i32);
|
||||
|
||||
fn main() {
|
||||
let irr = Irrefutable(0);
|
||||
while let Irrefutable(x) = irr { //~ ERROR E0165
|
||||
//~| irrefutable pattern
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
error[E0165]: irrefutable while-let pattern
|
||||
--> $DIR/E0165.rs:5:15
|
||||
|
|
||||
LL | while let Irrefutable(x) = irr { //~ ERROR E0165
|
||||
| ^^^^^^^^^^^^^^ irrefutable pattern
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0165`.
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
// gate-test-irrefutable_let_patterns
|
||||
|
||||
|
||||
#[allow(irrefutable_let_patterns)]
|
||||
fn main() {
|
||||
if let _ = 5 {}
|
||||
//~^ ERROR irrefutable if-let pattern [E0162]
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/feature-gate-without_gate_irrefutable_pattern.rs:6:12
|
||||
|
|
||||
LL | if let _ = 5 {}
|
||||
| ^ irrefutable pattern
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0162`.
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
// compile-pass
|
||||
|
||||
fn macros() {
|
||||
macro_rules! foo{
|
||||
($p:pat, $e:expr, $b:block) => {{
|
||||
|
|
@ -10,20 +12,20 @@ fn macros() {
|
|||
}}
|
||||
}
|
||||
|
||||
foo!(a, 1, { //~ ERROR irrefutable if-let
|
||||
foo!(a, 1, { //~ WARN irrefutable if-let
|
||||
println!("irrefutable pattern");
|
||||
});
|
||||
bar!(a, 1, { //~ ERROR irrefutable if-let
|
||||
bar!(a, 1, { //~ WARN irrefutable if-let
|
||||
println!("irrefutable pattern");
|
||||
});
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
if let a = 1 { //~ ERROR irrefutable if-let
|
||||
if let a = 1 { //~ WARN irrefutable if-let
|
||||
println!("irrefutable pattern");
|
||||
}
|
||||
|
||||
if let a = 1 { //~ ERROR irrefutable if-let
|
||||
if let a = 1 { //~ WARN irrefutable if-let
|
||||
println!("irrefutable pattern");
|
||||
} else if true {
|
||||
println!("else-if in irrefutable if-let");
|
||||
|
|
@ -33,13 +35,13 @@ pub fn main() {
|
|||
|
||||
if let 1 = 2 {
|
||||
println!("refutable pattern");
|
||||
} else if let a = 1 { //~ ERROR irrefutable if-let
|
||||
} else if let a = 1 { //~ WARN irrefutable if-let
|
||||
println!("irrefutable pattern");
|
||||
}
|
||||
|
||||
if true {
|
||||
println!("if");
|
||||
} else if let a = 1 { //~ ERROR irrefutable if-let
|
||||
} else if let a = 1 { //~ WARN irrefutable if-let
|
||||
println!("irrefutable pattern");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,39 +1,62 @@
|
|||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:13:10
|
||||
warning: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:6:13
|
||||
|
|
||||
LL | foo!(a, 1, { //~ ERROR irrefutable if-let
|
||||
| ^ irrefutable pattern
|
||||
|
||||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:16:10
|
||||
LL | if let $p = $e $b
|
||||
| ^^
|
||||
...
|
||||
LL | / foo!(a, 1, { //~ WARN irrefutable if-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | });
|
||||
| |_______- in this macro invocation
|
||||
|
|
||||
LL | bar!(a, 1, { //~ ERROR irrefutable if-let
|
||||
| ^ irrefutable pattern
|
||||
= note: #[warn(irrefutable_let_patterns)] on by default
|
||||
|
||||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:22:12
|
||||
warning: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:6:13
|
||||
|
|
||||
LL | if let a = 1 { //~ ERROR irrefutable if-let
|
||||
| ^ irrefutable pattern
|
||||
LL | if let $p = $e $b
|
||||
| ^^
|
||||
...
|
||||
LL | / bar!(a, 1, { //~ WARN irrefutable if-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | });
|
||||
| |_______- in this macro invocation
|
||||
|
||||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:26:12
|
||||
warning: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:24:5
|
||||
|
|
||||
LL | if let a = 1 { //~ ERROR irrefutable if-let
|
||||
| ^ irrefutable pattern
|
||||
LL | / if let a = 1 { //~ WARN irrefutable if-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:36:19
|
||||
warning: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:28:5
|
||||
|
|
||||
LL | } else if let a = 1 { //~ ERROR irrefutable if-let
|
||||
| ^ irrefutable pattern
|
||||
LL | / if let a = 1 { //~ WARN irrefutable if-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | } else if true {
|
||||
LL | | println!("else-if in irrefutable if-let");
|
||||
LL | | } else {
|
||||
LL | | println!("else in irrefutable if-let");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:42:19
|
||||
warning: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:38:12
|
||||
|
|
||||
LL | } else if let a = 1 { //~ ERROR irrefutable if-let
|
||||
| ^ irrefutable pattern
|
||||
LL | } else if let a = 1 { //~ WARN irrefutable if-let
|
||||
| ____________^
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
warning: irrefutable if-let pattern
|
||||
--> $DIR/if-let.rs:44:12
|
||||
|
|
||||
LL | } else if let a = 1 { //~ WARN irrefutable if-let
|
||||
| ____________^
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
For more information about this error, try `rustc --explain E0162`.
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ fn main() {
|
|||
|
||||
[(); return while let Some(n) = Some(0) {}];
|
||||
//~^ ERROR return statement outside of function body
|
||||
//~^^ ERROR irrefutable while-let pattern
|
||||
//~^^ WARN irrefutable while-let pattern
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,13 +22,14 @@ error[E0572]: return statement outside of function body
|
|||
LL | [(); return while let Some(n) = Some(0) {}];
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0165]: irrefutable while-let pattern
|
||||
--> $DIR/issue-51714.rs:11:27
|
||||
warning: irrefutable while-let pattern
|
||||
--> $DIR/issue-51714.rs:11:17
|
||||
|
|
||||
LL | [(); return while let Some(n) = Some(0) {}];
|
||||
| ^^^^^^^ irrefutable pattern
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: #[warn(irrefutable_let_patterns)] on by default
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
Some errors occurred: E0165, E0572.
|
||||
For more information about an error, try `rustc --explain E0165`.
|
||||
For more information about this error, try `rustc --explain E0572`.
|
||||
|
|
|
|||
9
src/test/ui/pattern/deny-irrefutable-let-patterns.rs
Normal file
9
src/test/ui/pattern/deny-irrefutable-let-patterns.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#![deny(irrefutable_let_patterns)]
|
||||
|
||||
fn main() {
|
||||
if let _ = 5 {} //~ ERROR irrefutable if-let pattern
|
||||
|
||||
while let _ = 5 { //~ ERROR irrefutable while-let pattern
|
||||
break;
|
||||
}
|
||||
}
|
||||
22
src/test/ui/pattern/deny-irrefutable-let-patterns.stderr
Normal file
22
src/test/ui/pattern/deny-irrefutable-let-patterns.stderr
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
error: irrefutable if-let pattern
|
||||
--> $DIR/deny-irrefutable-let-patterns.rs:4:5
|
||||
|
|
||||
LL | if let _ = 5 {} //~ ERROR irrefutable if-let pattern
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: lint level defined here
|
||||
--> $DIR/deny-irrefutable-let-patterns.rs:1:9
|
||||
|
|
||||
LL | #![deny(irrefutable_let_patterns)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: irrefutable while-let pattern
|
||||
--> $DIR/deny-irrefutable-let-patterns.rs:6:5
|
||||
|
|
||||
LL | / while let _ = 5 { //~ ERROR irrefutable while-let pattern
|
||||
LL | | break;
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
43
src/test/ui/pattern/enum-variant-generic-args.rs
Normal file
43
src/test/ui/pattern/enum-variant-generic-args.rs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// run-pass
|
||||
|
||||
#![feature(type_alias_enum_variants)]
|
||||
|
||||
#![allow(irrefutable_let_patterns)]
|
||||
|
||||
#[allow(dead_code)]
|
||||
enum Enum<T> { TSVariant(T), SVariant { v: T } }
|
||||
type Alias<T> = Enum<T>;
|
||||
type AliasFixed = Enum<()>;
|
||||
|
||||
macro_rules! is_variant {
|
||||
(TSVariant, $expr:expr) => (is_variant!(@check TSVariant, (_), $expr));
|
||||
(SVariant, $expr:expr) => (is_variant!(@check SVariant, { v: _ }, $expr));
|
||||
(@check $variant:ident, $matcher:tt, $expr:expr) => (
|
||||
assert!(if let Enum::$variant::<()> $matcher = $expr { true } else { false },
|
||||
"expr does not have correct type");
|
||||
);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Tuple struct variant
|
||||
|
||||
is_variant!(TSVariant, Enum::TSVariant(()));
|
||||
is_variant!(TSVariant, Enum::TSVariant::<()>(()));
|
||||
is_variant!(TSVariant, Enum::<()>::TSVariant(()));
|
||||
|
||||
is_variant!(TSVariant, Alias::TSVariant(()));
|
||||
is_variant!(TSVariant, Alias::<()>::TSVariant(()));
|
||||
|
||||
is_variant!(TSVariant, AliasFixed::TSVariant(()));
|
||||
|
||||
// Struct variant
|
||||
|
||||
is_variant!(SVariant, Enum::SVariant { v: () });
|
||||
is_variant!(SVariant, Enum::SVariant::<()> { v: () });
|
||||
is_variant!(SVariant, Enum::<()>::SVariant { v: () });
|
||||
|
||||
is_variant!(SVariant, Alias::SVariant { v: () });
|
||||
is_variant!(SVariant, Alias::<()>::SVariant { v: () });
|
||||
|
||||
is_variant!(SVariant, AliasFixed::SVariant { v: () });
|
||||
}
|
||||
11
src/test/ui/pattern/irrefutable-let-patterns.rs
Normal file
11
src/test/ui/pattern/irrefutable-let-patterns.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// run-pass
|
||||
|
||||
#![allow(irrefutable_let_patterns)]
|
||||
|
||||
fn main() {
|
||||
if let _ = 5 {}
|
||||
|
||||
while let _ = 5 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
// Enabling `ireffutable_let_patterns` isn't necessary for what this tests, but it makes coming up
|
||||
// with examples easier.
|
||||
#![feature(irrefutable_let_patterns)]
|
||||
|
||||
#[allow(irrefutable_let_patterns)]
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2015.rs:11:47
|
||||
--> $DIR/syntax-ambiguity-2015.rs:10:47
|
||||
|
|
||||
LL | if let Range { start: _, end: _ } = true..true && false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)`
|
||||
|
|
@ -8,7 +8,7 @@ LL | if let Range { start: _, end: _ } = true..true && false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `||`
|
||||
--> $DIR/syntax-ambiguity-2015.rs:14:47
|
||||
--> $DIR/syntax-ambiguity-2015.rs:13:47
|
||||
|
|
||||
LL | if let Range { start: _, end: _ } = true..true || false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)`
|
||||
|
|
@ -17,7 +17,7 @@ LL | if let Range { start: _, end: _ } = true..true || false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2015.rs:17:50
|
||||
--> $DIR/syntax-ambiguity-2015.rs:16:50
|
||||
|
|
||||
LL | while let Range { start: _, end: _ } = true..true && false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)`
|
||||
|
|
@ -26,7 +26,7 @@ LL | while let Range { start: _, end: _ } = true..true && false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `||`
|
||||
--> $DIR/syntax-ambiguity-2015.rs:20:50
|
||||
--> $DIR/syntax-ambiguity-2015.rs:19:50
|
||||
|
|
||||
LL | while let Range { start: _, end: _ } = true..true || false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)`
|
||||
|
|
@ -35,7 +35,7 @@ LL | while let Range { start: _, end: _ } = true..true || false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2015.rs:23:19
|
||||
--> $DIR/syntax-ambiguity-2015.rs:22:19
|
||||
|
|
||||
LL | if let true = false && false { }
|
||||
| ^^^^^^^^^^^^^^ help: consider adding parentheses: `(false && false)`
|
||||
|
|
@ -44,7 +44,7 @@ LL | if let true = false && false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2015.rs:26:22
|
||||
--> $DIR/syntax-ambiguity-2015.rs:25:22
|
||||
|
|
||||
LL | while let true = (1 == 2) && false { }
|
||||
| ^^^^^^^^^^^^^^^^^ help: consider adding parentheses: `((1 == 2) && false)`
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
// Enabling `ireffutable_let_patterns` isn't necessary for what this tests, but it makes coming up
|
||||
// with examples easier.
|
||||
#![feature(irrefutable_let_patterns)]
|
||||
|
||||
#[allow(irrefutable_let_patterns)]
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2018.rs:11:47
|
||||
--> $DIR/syntax-ambiguity-2018.rs:10:47
|
||||
|
|
||||
LL | if let Range { start: _, end: _ } = true..true && false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)`
|
||||
|
|
@ -8,7 +8,7 @@ LL | if let Range { start: _, end: _ } = true..true && false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `||`
|
||||
--> $DIR/syntax-ambiguity-2018.rs:14:47
|
||||
--> $DIR/syntax-ambiguity-2018.rs:13:47
|
||||
|
|
||||
LL | if let Range { start: _, end: _ } = true..true || false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)`
|
||||
|
|
@ -17,7 +17,7 @@ LL | if let Range { start: _, end: _ } = true..true || false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2018.rs:17:50
|
||||
--> $DIR/syntax-ambiguity-2018.rs:16:50
|
||||
|
|
||||
LL | while let Range { start: _, end: _ } = true..true && false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)`
|
||||
|
|
@ -26,7 +26,7 @@ LL | while let Range { start: _, end: _ } = true..true && false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `||`
|
||||
--> $DIR/syntax-ambiguity-2018.rs:20:50
|
||||
--> $DIR/syntax-ambiguity-2018.rs:19:50
|
||||
|
|
||||
LL | while let Range { start: _, end: _ } = true..true || false { }
|
||||
| ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)`
|
||||
|
|
@ -35,7 +35,7 @@ LL | while let Range { start: _, end: _ } = true..true || false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2018.rs:23:19
|
||||
--> $DIR/syntax-ambiguity-2018.rs:22:19
|
||||
|
|
||||
LL | if let true = false && false { }
|
||||
| ^^^^^^^^^^^^^^ help: consider adding parentheses: `(false && false)`
|
||||
|
|
@ -44,7 +44,7 @@ LL | if let true = false && false { }
|
|||
= note: see rust-lang/rust#53668 for more information
|
||||
|
||||
error: ambiguous use of `&&`
|
||||
--> $DIR/syntax-ambiguity-2018.rs:26:22
|
||||
--> $DIR/syntax-ambiguity-2018.rs:25:22
|
||||
|
|
||||
LL | while let true = (1 == 2) && false { }
|
||||
| ^^^^^^^^^^^^^^^^^ help: consider adding parentheses: `((1 == 2) && false)`
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
// should-fail-irrefutable_let_patterns
|
||||
fn main() {
|
||||
if let _ = 5 {}
|
||||
//~^ ERROR irrefutable if-let pattern [E0162]
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
error[E0162]: irrefutable if-let pattern
|
||||
--> $DIR/should-fail-no_gate_irrefutable_if_let_pattern.rs:3:12
|
||||
|
|
||||
LL | if let _ = 5 {}
|
||||
| ^ irrefutable pattern
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0162`.
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#![feature(irrefutable_let_patterns)]
|
||||
|
||||
// should-fail-irrefutable_let_patterns_with_gate
|
||||
fn main() {
|
||||
if let _ = 5 {}
|
||||
//~^ ERROR irrefutable if-let pattern [irrefutable_let_patterns]
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
error: irrefutable if-let pattern
|
||||
--> $DIR/should-fail-with_gate_irrefutable_pattern_deny.rs:5:5
|
||||
|
|
||||
LL | if let _ = 5 {}
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: #[deny(irrefutable_let_patterns)] on by default
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
// run-pass
|
||||
|
||||
fn macros() {
|
||||
macro_rules! foo{
|
||||
($p:pat, $e:expr, $b:block) => {{
|
||||
|
|
@ -10,16 +12,17 @@ fn macros() {
|
|||
}}
|
||||
}
|
||||
|
||||
foo!(a, 1, { //~ ERROR irrefutable while-let
|
||||
foo!(a, 1, { //~ WARN irrefutable while-let
|
||||
println!("irrefutable pattern");
|
||||
});
|
||||
bar!(a, 1, { //~ ERROR irrefutable while-let
|
||||
bar!(a, 1, { //~ WARN irrefutable while-let
|
||||
println!("irrefutable pattern");
|
||||
});
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
while let a = 1 { //~ ERROR irrefutable while-let
|
||||
while let a = 1 { //~ WARN irrefutable while-let
|
||||
println!("irrefutable pattern");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,32 @@
|
|||
error[E0165]: irrefutable while-let pattern
|
||||
--> $DIR/while-let.rs:13:10
|
||||
warning: irrefutable while-let pattern
|
||||
--> $DIR/while-let.rs:6:13
|
||||
|
|
||||
LL | foo!(a, 1, { //~ ERROR irrefutable while-let
|
||||
| ^ irrefutable pattern
|
||||
|
||||
error[E0165]: irrefutable while-let pattern
|
||||
--> $DIR/while-let.rs:16:10
|
||||
LL | while let $p = $e $b
|
||||
| ^^^^^
|
||||
...
|
||||
LL | / foo!(a, 1, { //~ WARN irrefutable while-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | });
|
||||
| |_______- in this macro invocation
|
||||
|
|
||||
LL | bar!(a, 1, { //~ ERROR irrefutable while-let
|
||||
| ^ irrefutable pattern
|
||||
= note: #[warn(irrefutable_let_patterns)] on by default
|
||||
|
||||
error[E0165]: irrefutable while-let pattern
|
||||
--> $DIR/while-let.rs:22:15
|
||||
warning: irrefutable while-let pattern
|
||||
--> $DIR/while-let.rs:6:13
|
||||
|
|
||||
LL | while let a = 1 { //~ ERROR irrefutable while-let
|
||||
| ^ irrefutable pattern
|
||||
LL | while let $p = $e $b
|
||||
| ^^^^^
|
||||
...
|
||||
LL | / bar!(a, 1, { //~ WARN irrefutable while-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | });
|
||||
| |_______- in this macro invocation
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
warning: irrefutable while-let pattern
|
||||
--> $DIR/while-let.rs:24:5
|
||||
|
|
||||
LL | / while let a = 1 { //~ WARN irrefutable while-let
|
||||
LL | | println!("irrefutable pattern");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
For more information about this error, try `rustc --explain E0165`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue