diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-06-17 07:38:26 +0200 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-06-23 01:29:29 +0200 |
| commit | 5ae5086cc59a19bb35b53df0580610e0df03d812 (patch) | |
| tree | ee9c23b37ed144ddce8c2ba2e50f6d82e34a2888 /src/test | |
| parent | 2017be4ef657d1a7d03a9dac80d868645c6673dd (diff) | |
| download | rust-5ae5086cc59a19bb35b53df0580610e0df03d812.tar.gz rust-5ae5086cc59a19bb35b53df0580610e0df03d812.zip | |
let_chains: --bless tests due to recovery in lowering.
Diffstat (limited to 'src/test')
4 files changed, 905 insertions, 94 deletions
diff --git a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs index 43e0ee8a86c..7d1e5c3d64d 100644 --- a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs +++ b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs @@ -1,4 +1,4 @@ -// Here we test that `ast_validation` behaves correctly wrt. `let $pats = $expr` expressions. +// Here we test that `lowering` behaves correctly wrt. `let $pats = $expr` expressions. // // We want to make sure that `let` is banned in situations other than: // @@ -30,17 +30,22 @@ fn main() {} fn nested_within_if_expr() { if &let 0 = 0 {} //~ ERROR `let` expressions are not supported here - //~^ ERROR `let` expressions only supported in `if` + //~^ ERROR mismatched types if !let 0 = 0 {} //~ ERROR `let` expressions are not supported here if *let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR type `bool` cannot be dereferenced if -let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR cannot apply unary operator `-` to type `bool` fn _check_try_binds_tighter() -> Result<(), ()> { if let 0 = 0? {} + //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` Ok(()) } if (let 0 = 0)? {} //~ ERROR `let` expressions are not supported here + //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~| ERROR the `?` operator can only be used in a function that returns `Result` if true || let 0 = 0 {} //~ ERROR `let` expressions are not supported here if (true || let 0 = 0) {} //~ ERROR `let` expressions are not supported here @@ -49,42 +54,62 @@ fn nested_within_if_expr() { let mut x = true; if x = let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types if true..(let 0 = 0) {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types if ..(let 0 = 0) {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types if (let 0 = 0).. {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types // Binds as `(let ... = true)..true &&/|| false`. if let Range { start: _, end: _ } = true..true && false {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types if let Range { start: _, end: _ } = true..true || false {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types // Binds as `(let Range { start: F, end } = F)..(|| true)`. const F: fn() -> bool = || true; if let Range { start: F, end } = F..|| true {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types + //~| ERROR mismatched types // Binds as `(let Range { start: true, end } = t)..(&&false)`. let t = &&true; if let Range { start: true, end } = t..&&false {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types + //~| ERROR mismatched types if let true = let true = true {} //~ ERROR `let` expressions are not supported here } fn nested_within_while_expr() { while &let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types while !let 0 = 0 {} //~ ERROR `let` expressions are not supported here while *let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR type `bool` cannot be dereferenced while -let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR cannot apply unary operator `-` to type `bool` fn _check_try_binds_tighter() -> Result<(), ()> { while let 0 = 0? {} + //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` Ok(()) } while (let 0 = 0)? {} //~ ERROR `let` expressions are not supported here + //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~| ERROR the `?` operator can only be used in a function that returns `Result` while true || let 0 = 0 {} //~ ERROR `let` expressions are not supported here while (true || let 0 = 0) {} //~ ERROR `let` expressions are not supported here @@ -93,26 +118,40 @@ fn nested_within_while_expr() { let mut x = true; while x = let 0 = 0 {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types while true..(let 0 = 0) {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types while ..(let 0 = 0) {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types while (let 0 = 0).. {} //~ ERROR `let` expressions are not supported here + //~^ ERROR mismatched types // Binds as `(let ... = true)..true &&/|| false`. while let Range { start: _, end: _ } = true..true && false {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types while let Range { start: _, end: _ } = true..true || false {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types // Binds as `(let Range { start: F, end } = F)..(|| true)`. const F: fn() -> bool = || true; while let Range { start: F, end } = F..|| true {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types + //~| ERROR mismatched types // Binds as `(let Range { start: true, end } = t)..(&&false)`. let t = &&true; while let Range { start: true, end } = t..&&false {} //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types + //~| ERROR mismatched types + //~| ERROR mismatched types while let true = let true = true {} //~ ERROR `let` expressions are not supported here } @@ -132,13 +171,18 @@ fn outside_if_and_while_expr() { !let 0 = 0; //~ ERROR `let` expressions are not supported here *let 0 = 0; //~ ERROR `let` expressions are not supported here + //~^ ERROR type `bool` cannot be dereferenced -let 0 = 0; //~ ERROR `let` expressions are not supported here + //~^ ERROR cannot apply unary operator `-` to type `bool` fn _check_try_binds_tighter() -> Result<(), ()> { let 0 = 0?; + //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` Ok(()) } (let 0 = 0)?; //~ ERROR `let` expressions are not supported here + //~^ ERROR the `?` operator can only be used in a function that returns `Result` + //~| ERROR the `?` operator can only be applied to values that implement `std::ops::Try` true || let 0 = 0; //~ ERROR `let` expressions are not supported here (true || let 0 = 0); //~ ERROR `let` expressions are not supported here @@ -153,6 +197,7 @@ fn outside_if_and_while_expr() { (let Range { start: _, end: _ } = true..true || false); //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types (let true = let true = true); //~^ ERROR `let` expressions are not supported here @@ -161,6 +206,7 @@ fn outside_if_and_while_expr() { // Check function tail position. &let 0 = 0 //~^ ERROR `let` expressions are not supported here + //~| ERROR mismatched types } // Let's make sure that `let` inside const generic arguments are considered. @@ -170,14 +216,20 @@ fn inside_const_generic_arguments() { if let A::<{ true && let 1 = 1 //~ ERROR `let` expressions are not supported here + //~^ ERROR constant contains unimplemented expression type + //~| ERROR constant contains unimplemented expression type }>::O = 5 {} while let A::<{ true && let 1 = 1 //~ ERROR `let` expressions are not supported here + //~^ ERROR constant contains unimplemented expression type + //~| ERROR constant contains unimplemented expression type }>::O = 5 {} if A::<{ true && let 1 = 1 //~ ERROR `let` expressions are not supported here + //~^ ERROR constant contains unimplemented expression type + //~| ERROR constant contains unimplemented expression type }>::O == 5 {} // In the cases above we have `ExprKind::Block` to help us out. diff --git a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr index 86baa038c0b..207d0d6d6b8 100644 --- a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr +++ b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr @@ -1,5 +1,5 @@ error: expected one of `,` or `>`, found `&&` - --> $DIR/disallowed-positions.rs:190:14 + --> $DIR/disallowed-positions.rs:242:14 | LL | true && let 1 = 1 | ^^ expected one of `,` or `>` here @@ -44,7 +44,7 @@ LL | if *let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:37:9 + --> $DIR/disallowed-positions.rs:38:9 | LL | if -let 0 = 0 {} | ^^^^^^^^^ @@ -53,7 +53,7 @@ LL | if -let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:43:9 + --> $DIR/disallowed-positions.rs:46:9 | LL | if (let 0 = 0)? {} | ^^^^^^^^^ @@ -62,7 +62,7 @@ LL | if (let 0 = 0)? {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:45:16 + --> $DIR/disallowed-positions.rs:50:16 | LL | if true || let 0 = 0 {} | ^^^^^^^^^ @@ -71,7 +71,7 @@ LL | if true || let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:46:17 + --> $DIR/disallowed-positions.rs:51:17 | LL | if (true || let 0 = 0) {} | ^^^^^^^^^ @@ -80,7 +80,7 @@ LL | if (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:47:25 + --> $DIR/disallowed-positions.rs:52:25 | LL | if true && (true || let 0 = 0) {} | ^^^^^^^^^ @@ -89,7 +89,7 @@ LL | if true && (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:48:25 + --> $DIR/disallowed-positions.rs:53:25 | LL | if true || (true && let 0 = 0) {} | ^^^^^^^^^ @@ -98,7 +98,7 @@ LL | if true || (true && let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:51:12 + --> $DIR/disallowed-positions.rs:56:12 | LL | if x = let 0 = 0 {} | ^^^^^^^^^ @@ -107,7 +107,7 @@ LL | if x = let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:53:15 + --> $DIR/disallowed-positions.rs:59:15 | LL | if true..(let 0 = 0) {} | ^^^^^^^^^ @@ -116,7 +116,7 @@ LL | if true..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:54:11 + --> $DIR/disallowed-positions.rs:61:11 | LL | if ..(let 0 = 0) {} | ^^^^^^^^^ @@ -125,7 +125,7 @@ LL | if ..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:55:9 + --> $DIR/disallowed-positions.rs:63:9 | LL | if (let 0 = 0).. {} | ^^^^^^^^^ @@ -134,7 +134,7 @@ LL | if (let 0 = 0).. {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:58:8 + --> $DIR/disallowed-positions.rs:67:8 | LL | if let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -143,7 +143,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/disallowed-positions.rs:60:8 + --> $DIR/disallowed-positions.rs:71:8 | LL | if let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -152,7 +152,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/disallowed-positions.rs:65:8 + --> $DIR/disallowed-positions.rs:78:8 | LL | if let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -161,7 +161,7 @@ LL | if let Range { start: F, end } = F..|| true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:70:8 + --> $DIR/disallowed-positions.rs:86:8 | LL | if let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -170,7 +170,7 @@ LL | if let Range { start: true, end } = t..&&false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:73:19 + --> $DIR/disallowed-positions.rs:92:19 | LL | if let true = let true = true {} | ^^^^^^^^^^^^^^^ @@ -179,7 +179,7 @@ LL | if let true = let true = true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:77:12 + --> $DIR/disallowed-positions.rs:96:12 | LL | while &let 0 = 0 {} | ^^^^^^^^^ @@ -188,7 +188,7 @@ LL | while &let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:79:12 + --> $DIR/disallowed-positions.rs:99:12 | LL | while !let 0 = 0 {} | ^^^^^^^^^ @@ -197,7 +197,7 @@ LL | while !let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:80:12 + --> $DIR/disallowed-positions.rs:100:12 | LL | while *let 0 = 0 {} | ^^^^^^^^^ @@ -206,7 +206,7 @@ LL | while *let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:81:12 + --> $DIR/disallowed-positions.rs:102:12 | LL | while -let 0 = 0 {} | ^^^^^^^^^ @@ -215,7 +215,7 @@ LL | while -let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:87:12 + --> $DIR/disallowed-positions.rs:110:12 | LL | while (let 0 = 0)? {} | ^^^^^^^^^ @@ -224,7 +224,7 @@ LL | while (let 0 = 0)? {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:89:19 + --> $DIR/disallowed-positions.rs:114:19 | LL | while true || let 0 = 0 {} | ^^^^^^^^^ @@ -233,7 +233,7 @@ LL | while true || let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:90:20 + --> $DIR/disallowed-positions.rs:115:20 | LL | while (true || let 0 = 0) {} | ^^^^^^^^^ @@ -242,7 +242,7 @@ LL | while (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:91:28 + --> $DIR/disallowed-positions.rs:116:28 | LL | while true && (true || let 0 = 0) {} | ^^^^^^^^^ @@ -251,7 +251,7 @@ LL | while true && (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:92:28 + --> $DIR/disallowed-positions.rs:117:28 | LL | while true || (true && let 0 = 0) {} | ^^^^^^^^^ @@ -260,7 +260,7 @@ LL | while true || (true && let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:95:15 + --> $DIR/disallowed-positions.rs:120:15 | LL | while x = let 0 = 0 {} | ^^^^^^^^^ @@ -269,7 +269,7 @@ LL | while x = let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:97:18 + --> $DIR/disallowed-positions.rs:123:18 | LL | while true..(let 0 = 0) {} | ^^^^^^^^^ @@ -278,7 +278,7 @@ LL | while true..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:98:14 + --> $DIR/disallowed-positions.rs:125:14 | LL | while ..(let 0 = 0) {} | ^^^^^^^^^ @@ -287,7 +287,7 @@ LL | while ..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:99:12 + --> $DIR/disallowed-positions.rs:127:12 | LL | while (let 0 = 0).. {} | ^^^^^^^^^ @@ -296,7 +296,7 @@ LL | while (let 0 = 0).. {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:102:11 + --> $DIR/disallowed-positions.rs:131:11 | LL | while let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -305,7 +305,7 @@ LL | while 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/disallowed-positions.rs:104:11 + --> $DIR/disallowed-positions.rs:135:11 | LL | while let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -314,7 +314,7 @@ LL | while 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/disallowed-positions.rs:109:11 + --> $DIR/disallowed-positions.rs:142:11 | LL | while let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -323,7 +323,7 @@ LL | while let Range { start: F, end } = F..|| true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:114:11 + --> $DIR/disallowed-positions.rs:150:11 | LL | while let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -332,7 +332,7 @@ LL | while let Range { start: true, end } = t..&&false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:117:22 + --> $DIR/disallowed-positions.rs:156:22 | LL | while let true = let true = true {} | ^^^^^^^^^^^^^^^ @@ -341,7 +341,7 @@ LL | while let true = let true = true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:131:6 + --> $DIR/disallowed-positions.rs:170:6 | LL | &let 0 = 0; | ^^^^^^^^^ @@ -350,7 +350,7 @@ LL | &let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:133:6 + --> $DIR/disallowed-positions.rs:172:6 | LL | !let 0 = 0; | ^^^^^^^^^ @@ -359,7 +359,7 @@ LL | !let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:134:6 + --> $DIR/disallowed-positions.rs:173:6 | LL | *let 0 = 0; | ^^^^^^^^^ @@ -368,7 +368,7 @@ LL | *let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:135:6 + --> $DIR/disallowed-positions.rs:175:6 | LL | -let 0 = 0; | ^^^^^^^^^ @@ -377,7 +377,7 @@ LL | -let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:141:6 + --> $DIR/disallowed-positions.rs:183:6 | LL | (let 0 = 0)?; | ^^^^^^^^^ @@ -386,7 +386,7 @@ LL | (let 0 = 0)?; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:143:13 + --> $DIR/disallowed-positions.rs:187:13 | LL | true || let 0 = 0; | ^^^^^^^^^ @@ -395,7 +395,7 @@ LL | true || let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:144:14 + --> $DIR/disallowed-positions.rs:188:14 | LL | (true || let 0 = 0); | ^^^^^^^^^ @@ -404,7 +404,7 @@ LL | (true || let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:145:22 + --> $DIR/disallowed-positions.rs:189:22 | LL | true && (true || let 0 = 0); | ^^^^^^^^^ @@ -413,7 +413,7 @@ LL | true && (true || let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:148:9 + --> $DIR/disallowed-positions.rs:192:9 | LL | x = let 0 = 0; | ^^^^^^^^^ @@ -422,7 +422,7 @@ LL | x = let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:150:12 + --> $DIR/disallowed-positions.rs:194:12 | LL | true..(let 0 = 0); | ^^^^^^^^^ @@ -431,7 +431,7 @@ LL | true..(let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:151:8 + --> $DIR/disallowed-positions.rs:195:8 | LL | ..(let 0 = 0); | ^^^^^^^^^ @@ -440,7 +440,7 @@ LL | ..(let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:152:6 + --> $DIR/disallowed-positions.rs:196:6 | LL | (let 0 = 0)..; | ^^^^^^^^^ @@ -449,7 +449,7 @@ LL | (let 0 = 0)..; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:154:6 + --> $DIR/disallowed-positions.rs:198:6 | LL | (let Range { start: _, end: _ } = true..true || false); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -458,7 +458,7 @@ LL | (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/disallowed-positions.rs:157:6 + --> $DIR/disallowed-positions.rs:202:6 | LL | (let true = let true = true); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -467,7 +467,7 @@ LL | (let true = let true = true); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:157:17 + --> $DIR/disallowed-positions.rs:202:17 | LL | (let true = let true = true); | ^^^^^^^^^^^^^^^ @@ -476,7 +476,7 @@ LL | (let true = let true = true); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:162:6 + --> $DIR/disallowed-positions.rs:207:6 | LL | &let 0 = 0 | ^^^^^^^^^ @@ -485,7 +485,7 @@ LL | &let 0 = 0 = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:172:17 + --> $DIR/disallowed-positions.rs:218:17 | LL | true && let 1 = 1 | ^^^^^^^^^ @@ -494,7 +494,7 @@ LL | true && let 1 = 1 = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:176:17 + --> $DIR/disallowed-positions.rs:224:17 | LL | true && let 1 = 1 | ^^^^^^^^^ @@ -503,7 +503,7 @@ LL | true && let 1 = 1 = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:180:17 + --> $DIR/disallowed-positions.rs:230:17 | LL | true && let 1 = 1 | ^^^^^^^^^ @@ -511,11 +511,477 @@ LL | true && let 1 = 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: `let` expressions only supported in `if` - --> $DIR/disallowed-positions.rs:32:9 +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:32:8 | LL | if &let 0 = 0 {} - | ^^^^^^^^^ + | ^^^^^^^^^^ expected bool, found &bool + | + = note: expected type `bool` + found type `&bool` + +error[E0614]: type `bool` cannot be dereferenced + --> $DIR/disallowed-positions.rs:36:8 + | +LL | if *let 0 = 0 {} + | ^^^^^^^^^^ + +error[E0600]: cannot apply unary operator `-` to type `bool` + --> $DIR/disallowed-positions.rs:38:8 + | +LL | if -let 0 = 0 {} + | ^^^^^^^^^^ cannot apply unary operator `-` + | + = note: an implementation of `std::ops::Neg` might be missing for `bool` + +error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` + --> $DIR/disallowed-positions.rs:46:8 + | +LL | if (let 0 = 0)? {} + | ^^^^^^^^^^^^ the `?` operator cannot be applied to type `bool` + | + = help: the trait `std::ops::Try` is not implemented for `bool` + = note: required by `std::ops::Try::into_result` + +error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) + --> $DIR/disallowed-positions.rs:46:8 + | +LL | if (let 0 = 0)? {} + | ^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` + | + = help: the trait `std::ops::Try` is not implemented for `()` + = note: required by `std::ops::Try::from_error` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:56:8 + | +LL | if x = let 0 = 0 {} + | ^^^^^^^^^^^^^ + | | + | expected bool, found () + | help: try comparing for equality: `x == let 0 = 0` + | + = note: expected type `bool` + found type `()` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:59:8 + | +LL | if true..(let 0 = 0) {} + | ^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:61:8 + | +LL | if ..(let 0 = 0) {} + | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeTo` + | + = note: expected type `bool` + found type `std::ops::RangeTo<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:63:8 + | +LL | if (let 0 = 0).. {} + | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeFrom` + | + = note: expected type `bool` + found type `std::ops::RangeFrom<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:67:12 + | +LL | if let Range { start: _, end: _ } = true..true && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:67:8 + | +LL | if let Range { start: _, end: _ } = true..true && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:71:12 + | +LL | if let Range { start: _, end: _ } = true..true || false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:71:8 + | +LL | if let Range { start: _, end: _ } = true..true || false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:78:12 + | +LL | if let Range { start: F, end } = F..|| true {} + | ^^^^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found struct `std::ops::Range` + | + = note: expected type `fn() -> bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:78:41 + | +LL | if let Range { start: F, end } = F..|| true {} + | ^^^^^^^ expected bool, found closure + | + = note: expected type `bool` + found type `[closure@$DIR/disallowed-positions.rs:78:41: 78:48]` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:78:8 + | +LL | if let Range { start: F, end } = F..|| true {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:86:12 + | +LL | if let Range { start: true, end } = t..&&false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:86:44 + | +LL | if let Range { start: true, end } = t..&&false {} + | ^^^^^^^ expected bool, found &&bool + | + = note: expected type `bool` + found type `&&bool` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:86:8 + | +LL | if let Range { start: true, end } = t..&&false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` + --> $DIR/disallowed-positions.rs:42:20 + | +LL | if let 0 = 0? {} + | ^^ the `?` operator cannot be applied to type `{integer}` + | + = help: the trait `std::ops::Try` is not implemented for `{integer}` + = note: required by `std::ops::Try::into_result` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:96:11 + | +LL | while &let 0 = 0 {} + | ^^^^^^^^^^ expected bool, found &bool + | + = note: expected type `bool` + found type `&bool` + +error[E0614]: type `bool` cannot be dereferenced + --> $DIR/disallowed-positions.rs:100:11 + | +LL | while *let 0 = 0 {} + | ^^^^^^^^^^ + +error[E0600]: cannot apply unary operator `-` to type `bool` + --> $DIR/disallowed-positions.rs:102:11 + | +LL | while -let 0 = 0 {} + | ^^^^^^^^^^ cannot apply unary operator `-` + | + = note: an implementation of `std::ops::Neg` might be missing for `bool` + +error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` + --> $DIR/disallowed-positions.rs:110:11 + | +LL | while (let 0 = 0)? {} + | ^^^^^^^^^^^^ the `?` operator cannot be applied to type `bool` + | + = help: the trait `std::ops::Try` is not implemented for `bool` + = note: required by `std::ops::Try::into_result` + +error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) + --> $DIR/disallowed-positions.rs:110:11 + | +LL | while (let 0 = 0)? {} + | ^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` + | + = help: the trait `std::ops::Try` is not implemented for `()` + = note: required by `std::ops::Try::from_error` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:120:11 + | +LL | while x = let 0 = 0 {} + | ^^^^^^^^^^^^^ + | | + | expected bool, found () + | help: try comparing for equality: `x == let 0 = 0` + | + = note: expected type `bool` + found type `()` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:123:11 + | +LL | while true..(let 0 = 0) {} + | ^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:125:11 + | +LL | while ..(let 0 = 0) {} + | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeTo` + | + = note: expected type `bool` + found type `std::ops::RangeTo<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:127:11 + | +LL | while (let 0 = 0).. {} + | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeFrom` + | + = note: expected type `bool` + found type `std::ops::RangeFrom<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:131:15 + | +LL | while let Range { start: _, end: _ } = true..true && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:131:11 + | +LL | while let Range { start: _, end: _ } = true..true && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:135:15 + | +LL | while let Range { start: _, end: _ } = true..true || false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:135:11 + | +LL | while let Range { start: _, end: _ } = true..true || false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:142:15 + | +LL | while let Range { start: F, end } = F..|| true {} + | ^^^^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found struct `std::ops::Range` + | + = note: expected type `fn() -> bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:142:44 + | +LL | while let Range { start: F, end } = F..|| true {} + | ^^^^^^^ expected bool, found closure + | + = note: expected type `bool` + found type `[closure@$DIR/disallowed-positions.rs:142:44: 142:51]` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:142:11 + | +LL | while let Range { start: F, end } = F..|| true {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:150:15 + | +LL | while let Range { start: true, end } = t..&&false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:150:47 + | +LL | while let Range { start: true, end } = t..&&false {} + | ^^^^^^^ expected bool, found &&bool + | + = note: expected type `bool` + found type `&&bool` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:150:11 + | +LL | while let Range { start: true, end } = t..&&false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<bool>` + +error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` + --> $DIR/disallowed-positions.rs:106:23 + | +LL | while let 0 = 0? {} + | ^^ the `?` operator cannot be applied to type `{integer}` + | + = help: the trait `std::ops::Try` is not implemented for `{integer}` + = note: required by `std::ops::Try::into_result` + +error[E0614]: type `bool` cannot be dereferenced + --> $DIR/disallowed-positions.rs:173:5 + | +LL | *let 0 = 0; + | ^^^^^^^^^^ + +error[E0600]: cannot apply unary operator `-` to type `bool` + --> $DIR/disallowed-positions.rs:175:5 + | +LL | -let 0 = 0; + | ^^^^^^^^^^ cannot apply unary operator `-` + | + = note: an implementation of `std::ops::Neg` might be missing for `bool` + +error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` + --> $DIR/disallowed-positions.rs:183:5 + | +LL | (let 0 = 0)?; + | ^^^^^^^^^^^^ the `?` operator cannot be applied to type `bool` + | + = help: the trait `std::ops::Try` is not implemented for `bool` + = note: required by `std::ops::Try::into_result` + +error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) + --> $DIR/disallowed-positions.rs:183:5 + | +LL | (let 0 = 0)?; + | ^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` + | + = help: the trait `std::ops::Try` is not implemented for `()` + = note: required by `std::ops::Try::from_error` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:198:10 + | +LL | (let Range { start: _, end: _ } = true..true || false); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:207:5 + | +LL | fn outside_if_and_while_expr() { + | - help: try adding a return type: `-> &bool` +... +LL | &let 0 = 0 + | ^^^^^^^^^^ expected (), found &bool + | + = note: expected type `()` + found type `&bool` + +error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` + --> $DIR/disallowed-positions.rs:179:17 + | +LL | let 0 = 0?; + | ^^ the `?` operator cannot be applied to type `{integer}` + | + = help: the trait `std::ops::Try` is not implemented for `{integer}` + = note: required by `std::ops::Try::into_result` + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:218:25 + | +LL | true && let 1 = 1 + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:218:21 + | +LL | true && let 1 = 1 + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:224:25 + | +LL | true && let 1 = 1 + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:224:21 + | +LL | true && let 1 = 1 + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:230:25 + | +LL | true && let 1 = 1 + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:230:21 + | +LL | true && let 1 = 1 + | ^ -error: aborting due to 57 previous errors +error: aborting due to 109 previous errors +Some errors have detailed explanations: E0019, E0277, E0308, E0600, E0614. +For more information about an error, try `rustc --explain E0019`. diff --git a/src/test/ui/rfc-2497-if-let-chains/feature-gate.rs b/src/test/ui/rfc-2497-if-let-chains/feature-gate.rs index c125ec89cb5..64987663adb 100644 --- a/src/test/ui/rfc-2497-if-let-chains/feature-gate.rs +++ b/src/test/ui/rfc-2497-if-let-chains/feature-gate.rs @@ -13,26 +13,33 @@ fn _if() { if (let 0 = 1) {} //~^ ERROR `let` expressions in this position are experimental [E0658] - //~| ERROR `let` expressions only supported in `if` + //~| ERROR `let` expressions are not supported here if (((let 0 = 1))) {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here if true && let 0 = 1 {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here if let 0 = 1 && true {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here if (let 0 = 1) && true {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here if true && (let 0 = 1) {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here if (let 0 = 1) && (let 0 = 1) {} //~^ ERROR `let` expressions in this position are experimental [E0658] //~| ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} //~^ ERROR `let` expressions in this position are experimental [E0658] @@ -40,35 +47,49 @@ fn _if() { //~| ERROR `let` expressions in this position are experimental [E0658] //~| ERROR `let` expressions in this position are experimental [E0658] //~| ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here if let Range { start: _, end: _ } = (true..true) && false {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here } fn _while() { - if let 0 = 1 {} // Stable! + while let 0 = 1 {} // Stable! while (let 0 = 1) {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here while (((let 0 = 1))) {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here while true && let 0 = 1 {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here while let 0 = 1 && true {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here while (let 0 = 1) && true {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here while true && (let 0 = 1) {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here while (let 0 = 1) && (let 0 = 1) {} //~^ ERROR `let` expressions in this position are experimental [E0658] //~| ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} //~^ ERROR `let` expressions in this position are experimental [E0658] @@ -76,9 +97,15 @@ fn _while() { //~| ERROR `let` expressions in this position are experimental [E0658] //~| ERROR `let` expressions in this position are experimental [E0658] //~| ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here + //~| ERROR `let` expressions are not supported here while let Range { start: _, end: _ } = (true..true) && false {} //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here } fn _macros() { @@ -95,8 +122,10 @@ fn _macros() { } use_expr!((let 0 = 1 && 0 == 0)); //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here use_expr!((let 0 = 1)); //~^ ERROR `let` expressions in this position are experimental [E0658] + //~| ERROR `let` expressions are not supported here #[cfg(FALSE)] (let 0 = 1); //~^ ERROR `let` expressions in this position are experimental [E0658] use_expr!(let 0 = 1); diff --git a/src/test/ui/rfc-2497-if-let-chains/feature-gate.stderr b/src/test/ui/rfc-2497-if-let-chains/feature-gate.stderr index 5ed0dd3cab6..6167427fa9f 100644 --- a/src/test/ui/rfc-2497-if-let-chains/feature-gate.stderr +++ b/src/test/ui/rfc-2497-if-let-chains/feature-gate.stderr @@ -1,5 +1,5 @@ error: no rules expected the token `let` - --> $DIR/feature-gate.rs:102:15 + --> $DIR/feature-gate.rs:131:15 | LL | macro_rules! use_expr { | --------------------- when calling this macro @@ -26,7 +26,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:21:16 + --> $DIR/feature-gate.rs:22:16 | LL | if true && let 0 = 1 {} | ^^^^^^^^^ @@ -35,7 +35,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:24:8 + --> $DIR/feature-gate.rs:26:8 | LL | if let 0 = 1 && true {} | ^^^^^^^^^ @@ -44,7 +44,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:9 + --> $DIR/feature-gate.rs:30:9 | LL | if (let 0 = 1) && true {} | ^^^^^^^^^ @@ -53,7 +53,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:30:17 + --> $DIR/feature-gate.rs:34:17 | LL | if true && (let 0 = 1) {} | ^^^^^^^^^ @@ -62,7 +62,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:33:9 + --> $DIR/feature-gate.rs:38:9 | LL | if (let 0 = 1) && (let 0 = 1) {} | ^^^^^^^^^ @@ -71,7 +71,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:33:24 + --> $DIR/feature-gate.rs:38:24 | LL | if (let 0 = 1) && (let 0 = 1) {} | ^^^^^^^^^ @@ -80,7 +80,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:37:8 + --> $DIR/feature-gate.rs:44:8 | LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -89,7 +89,7 @@ LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:37:21 + --> $DIR/feature-gate.rs:44:21 | LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -98,7 +98,7 @@ LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:37:35 + --> $DIR/feature-gate.rs:44:35 | 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 = 5) {} = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:37:48 + --> $DIR/feature-gate.rs:44:48 | 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 = 5) {} = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:37:61 + --> $DIR/feature-gate.rs:44:61 | 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 = 5) {} = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:44:8 + --> $DIR/feature-gate.rs:56:8 | LL | if let Range { start: _, end: _ } = (true..true) && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -134,7 +134,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:51:12 + --> $DIR/feature-gate.rs:64:12 | LL | while (let 0 = 1) {} | ^^^^^^^^^ @@ -143,7 +143,7 @@ LL | while (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:54:14 + --> $DIR/feature-gate.rs:68:14 | LL | while (((let 0 = 1))) {} | ^^^^^^^^^ @@ -152,7 +152,7 @@ LL | while (((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:57:19 + --> $DIR/feature-gate.rs:72:19 | LL | while true && let 0 = 1 {} | ^^^^^^^^^ @@ -161,7 +161,7 @@ LL | while 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:60:11 + --> $DIR/feature-gate.rs:76:11 | LL | while let 0 = 1 && true {} | ^^^^^^^^^ @@ -170,7 +170,7 @@ LL | while 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:63:12 + --> $DIR/feature-gate.rs:80:12 | LL | while (let 0 = 1) && true {} | ^^^^^^^^^ @@ -179,7 +179,7 @@ LL | while (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:66:20 + --> $DIR/feature-gate.rs:84:20 | LL | while true && (let 0 = 1) {} | ^^^^^^^^^ @@ -188,7 +188,7 @@ LL | while 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:69:12 + --> $DIR/feature-gate.rs:88:12 | LL | while (let 0 = 1) && (let 0 = 1) {} | ^^^^^^^^^ @@ -197,7 +197,7 @@ LL | while (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:69:27 + --> $DIR/feature-gate.rs:88:27 | LL | while (let 0 = 1) && (let 0 = 1) {} | ^^^^^^^^^ @@ -206,7 +206,7 @@ LL | while (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:73:11 + --> $DIR/feature-gate.rs:94:11 | LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -215,7 +215,7 @@ LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) { = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:73:24 + --> $DIR/feature-gate.rs:94:24 | LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -224,7 +224,7 @@ LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) { = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:73:38 + --> $DIR/feature-gate.rs:94:38 | LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -233,7 +233,7 @@ LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) { = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:73:51 + --> $DIR/feature-gate.rs:94:51 | LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -242,7 +242,7 @@ LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) { = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:73:64 + --> $DIR/feature-gate.rs:94:64 | LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} | ^^^^^^^^^ @@ -251,7 +251,7 @@ LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) { = help: add #![feature(let_chains)] to the crate attributes to enable error[E0658]: `let` expressions in this position are experimental - --> $DIR/feature-gate.rs:80:11 + --> $DIR/feature-gate.rs:106:11 | LL | while let Range { start: _, end: _ } = (true..true) && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -260,7 +260,7 @@ LL | while 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:100:20 + --> $DIR/feature-gate.rs:129:20 | LL | #[cfg(FALSE)] (let 0 = 1); | ^^^^^^^^^ @@ -269,7 +269,7 @@ LL | #[cfg(FALSE)] (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:87:17 + --> $DIR/feature-gate.rs:114:17 | LL | noop_expr!((let 0 = 1)); | ^^^^^^^^^ @@ -278,7 +278,7 @@ LL | noop_expr!((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:96:16 + --> $DIR/feature-gate.rs:123:16 | LL | use_expr!((let 0 = 1 && 0 == 0)); | ^^^^^^^^^ @@ -287,7 +287,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:98:16 + --> $DIR/feature-gate.rs:126:16 | LL | use_expr!((let 0 = 1)); | ^^^^^^^^^ @@ -295,12 +295,276 @@ LL | use_expr!((let 0 = 1)); = note: for more information, see https://github.com/rust-lang/rust/issues/53667 = help: add #![feature(let_chains)] to the crate attributes to enable -error: `let` expressions only supported in `if` +error: `let` expressions are not supported here --> $DIR/feature-gate.rs:14:9 | LL | if (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:18:11 + | +LL | if (((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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:22:16 + | +LL | if true && 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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:26:8 + | +LL | if let 0 = 1 && true {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:30:9 + | +LL | if (let 0 = 1) && true {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:34:17 + | +LL | if true && (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:38:9 + | +LL | if (let 0 = 1) && (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:38:24 + | +LL | if (let 0 = 1) && (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:44:8 + | +LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:44:21 + | +LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:44:35 + | +LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:44:48 + | +LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:44:61 + | +LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:56:8 + | +LL | if let Range { start: _, end: _ } = (true..true) && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:64:12 + | +LL | while (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:68:14 + | +LL | while (((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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:72:19 + | +LL | while true && 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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:76:11 + | +LL | while let 0 = 1 && true {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:80:12 + | +LL | while (let 0 = 1) && true {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:84:20 + | +LL | while true && (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:88:12 + | +LL | while (let 0 = 1) && (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:88:27 + | +LL | while (let 0 = 1) && (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: `let` expressions are not supported here + --> $DIR/feature-gate.rs:94:11 + | +LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:94:24 + | +LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:94:38 + | +LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:94:51 + | +LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:94:64 + | +LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {} + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:106:11 + | +LL | while let Range { start: _, end: _ } = (true..true) && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:123:16 + | +LL | use_expr!((let 0 = 1 && 0 == 0)); + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + +error: `let` expressions are not supported here + --> $DIR/feature-gate.rs:126:16 + | +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 34 previous errors +error: aborting due to 63 previous errors For more information about this error, try `rustc --explain E0658`. |
