Auto merge of #143214 - camsteffen:remove-let-chains-feature, r=est31
Remove let_chains unstable feature
Per https://github.com/rust-lang/rust/issues/53667#issuecomment-3016742982 (but then I also noticed rust-lang/rust#140722)
This replaces the feature gate with a parser error that says let chains require 2024.
A lot of tests were using the unstable feature. I either added edition:2024 to the test or split out the parts that require 2024.
diff --git a/compiler/rustc_ast_passes/src/feature_gate.rs b/compiler/rustc_ast_passes/src/feature_gate.rs
index c7f41fc..5d8ee07 100644
--- a/compiler/rustc_ast_passes/src/feature_gate.rs
+++ b/compiler/rustc_ast_passes/src/feature_gate.rs
@@ -469,7 +469,6 @@ macro_rules! gate_all {
"`if let` guards are experimental",
"you can write `if matches!(<expr>, <pattern>)` instead of `if let <pattern> = <expr>`"
);
- gate_all!(let_chains, "`let` expressions in this position are unstable");
gate_all!(
async_trait_bounds,
"`async` trait bounds are unstable",
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
index db67c50..83be324 100644
--- a/compiler/rustc_feature/src/accepted.rs
+++ b/compiler/rustc_feature/src/accepted.rs
@@ -265,6 +265,8 @@ macro_rules! declare_features {
(accepted, keylocker_x86, "1.89.0", Some(134813)),
/// Allows `'a: { break 'a; }`.
(accepted, label_break_value, "1.65.0", Some(48594)),
+ /// Allows `if/while p && let q = r && ...` chains.
+ (accepted, let_chains, "1.88.0", Some(53667)),
/// Allows `let...else` statements.
(accepted, let_else, "1.65.0", Some(87335)),
/// Allows using `reason` in lint attributes and the `#[expect(lint)]` lint check.
diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs
index 269a9c6..efd8bde 100644
--- a/compiler/rustc_feature/src/unstable.rs
+++ b/compiler/rustc_feature/src/unstable.rs
@@ -550,8 +550,6 @@ pub fn internal(&self, feature: Symbol) -> bool {
(unstable, large_assignments, "1.52.0", Some(83518)),
/// Allow to have type alias types for inter-crate use.
(incomplete, lazy_type_alias, "1.72.0", Some(112792)),
- /// Allows `if/while p && let q = r && ...` chains.
- (unstable, let_chains, "1.37.0", Some(53667)),
/// Allows using `#[link(kind = "link-arg", name = "...")]`
/// to pass custom arguments to the linker.
(unstable, link_arg_attribute, "1.76.0", Some(99427)),
diff --git a/compiler/rustc_parse/messages.ftl b/compiler/rustc_parse/messages.ftl
index f6e0b08..af9f873 100644
--- a/compiler/rustc_parse/messages.ftl
+++ b/compiler/rustc_parse/messages.ftl
@@ -512,6 +512,8 @@
parse_left_arrow_operator = unexpected token: `<-`
.suggestion = if you meant to write a comparison against a negative value, add a space in between `<` and `-`
+parse_let_chain_pre_2024 = let chains are only allowed in Rust 2024 or later
+
parse_lifetime_after_mut = lifetime must precede `mut`
.suggestion = place the lifetime before `mut`
diff --git a/compiler/rustc_parse/src/errors.rs b/compiler/rustc_parse/src/errors.rs
index 0f0c543..7f1b099 100644
--- a/compiler/rustc_parse/src/errors.rs
+++ b/compiler/rustc_parse/src/errors.rs
@@ -1779,6 +1779,13 @@ pub(crate) struct AsyncBoundModifierIn2015 {
}
#[derive(Diagnostic)]
+#[diag(parse_let_chain_pre_2024)]
+pub(crate) struct LetChainPre2024 {
+ #[primary_span]
+ pub span: Span,
+}
+
+#[derive(Diagnostic)]
#[diag(parse_self_argument_pointer)]
pub(crate) struct SelfArgumentPointer {
#[primary_span]
diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs
index 3cedc86..3d89530 100644
--- a/compiler/rustc_parse/src/parser/expr.rs
+++ b/compiler/rustc_parse/src/parser/expr.rs
@@ -4117,7 +4117,7 @@ fn visit_expr(&mut self, e: &mut Expr) {
LetChainsPolicy::AlwaysAllowed => (),
LetChainsPolicy::EditionDependent { current_edition } => {
if !current_edition.at_least_rust_2024() || !span.at_least_rust_2024() {
- self.parser.psess.gated_spans.gate(sym::let_chains, span);
+ self.parser.dcx().emit_err(errors::LetChainPre2024 { span });
}
}
}
diff --git a/src/tools/rustfmt/tests/source/let_chains.rs b/src/tools/rustfmt/tests/source/let_chains.rs
index 0c4d8aa..fc2a931 100644
--- a/src/tools/rustfmt/tests/source/let_chains.rs
+++ b/src/tools/rustfmt/tests/source/let_chains.rs
@@ -1,3 +1,5 @@
+// rustfmt-edition: 2024
+
fn main() {
if let x = x && x {}
diff --git a/src/tools/rustfmt/tests/target/let_chains.rs b/src/tools/rustfmt/tests/target/let_chains.rs
index 204937b..4fd6048 100644
--- a/src/tools/rustfmt/tests/target/let_chains.rs
+++ b/src/tools/rustfmt/tests/target/let_chains.rs
@@ -1,3 +1,5 @@
+// rustfmt-edition: 2024
+
fn main() {
if let x = x
&& x
diff --git a/tests/coverage/branch/if-let.coverage b/tests/coverage/branch/if-let.coverage
index 9a3f011..e55da7f 100644
--- a/tests/coverage/branch/if-let.coverage
+++ b/tests/coverage/branch/if-let.coverage
@@ -1,5 +1,5 @@
- LL| |#![feature(coverage_attribute, let_chains)]
- LL| |//@ edition: 2021
+ LL| |#![feature(coverage_attribute)]
+ LL| |//@ edition: 2024
LL| |//@ compile-flags: -Zcoverage-options=branch
LL| |//@ llvm-cov-flags: --show-branches=count
LL| |
diff --git a/tests/coverage/branch/if-let.rs b/tests/coverage/branch/if-let.rs
index 13db00a..6f88de5 100644
--- a/tests/coverage/branch/if-let.rs
+++ b/tests/coverage/branch/if-let.rs
@@ -1,5 +1,5 @@
-#![feature(coverage_attribute, let_chains)]
-//@ edition: 2021
+#![feature(coverage_attribute)]
+//@ edition: 2024
//@ compile-flags: -Zcoverage-options=branch
//@ llvm-cov-flags: --show-branches=count
diff --git a/tests/ui/drop/drop-order-comparisons-let-chains.rs b/tests/ui/drop/drop-order-comparisons-let-chains.rs
new file mode 100644
index 0000000..5dea5e1
--- /dev/null
+++ b/tests/ui/drop/drop-order-comparisons-let-chains.rs
@@ -0,0 +1,145 @@
+// See drop-order-comparisons.rs
+
+//@ edition: 2024
+//@ run-pass
+
+#![feature(if_let_guard)]
+
+fn t_if_let_chains_then() {
+ let e = Events::new();
+ _ = if e.ok(1).is_ok()
+ && let true = e.ok(9).is_ok()
+ && let Ok(_v) = e.ok(8)
+ && let Ok(_) = e.ok(7)
+ && let Ok(_) = e.ok(6).as_ref()
+ && e.ok(2).is_ok()
+ && let Ok(_v) = e.ok(5)
+ && let Ok(_) = e.ok(4).as_ref() {
+ e.mark(3);
+ };
+ e.assert(9);
+}
+
+fn t_guard_if_let_chains_then() {
+ let e = Events::new();
+ _ = match () {
+ () if e.ok(1).is_ok()
+ && let true = e.ok(9).is_ok()
+ && let Ok(_v) = e.ok(8)
+ && let Ok(_) = e.ok(7)
+ && let Ok(_) = e.ok(6).as_ref()
+ && e.ok(2).is_ok()
+ && let Ok(_v) = e.ok(5)
+ && let Ok(_) = e.ok(4).as_ref() => {
+ e.mark(3);
+ }
+ _ => {}
+ };
+ e.assert(9);
+}
+
+fn t_if_let_chains_then_else() {
+ let e = Events::new();
+ _ = if e.ok(1).is_ok()
+ && let true = e.ok(8).is_ok()
+ && let Ok(_v) = e.ok(7)
+ && let Ok(_) = e.ok(6)
+ && let Ok(_) = e.ok(5).as_ref()
+ && e.ok(2).is_ok()
+ && let Ok(_v) = e.ok(4)
+ && let Ok(_) = e.err(3) {} else {
+ e.mark(9);
+ };
+ e.assert(9);
+}
+
+fn t_guard_if_let_chains_then_else() {
+ let e = Events::new();
+ _ = match () {
+ () if e.ok(1).is_ok()
+ && let true = e.ok(8).is_ok()
+ && let Ok(_v) = e.ok(7)
+ && let Ok(_) = e.ok(6)
+ && let Ok(_) = e.ok(5).as_ref()
+ && e.ok(2).is_ok()
+ && let Ok(_v) = e.ok(4)
+ && let Ok(_) = e.err(3) => {}
+ _ => {
+ e.mark(9);
+ }
+ };
+ e.assert(9);
+}
+
+fn main() {
+ t_if_let_chains_then();
+ t_guard_if_let_chains_then();
+ t_if_let_chains_then_else();
+ t_guard_if_let_chains_then_else();
+}
+
+// # Test scaffolding
+
+use core::cell::RefCell;
+use std::collections::HashSet;
+
+/// A buffer to track the order of events.
+///
+/// First, numbered events are logged into this buffer.
+///
+/// Then, `assert` is called to verify that the correct number of
+/// events were logged, and that they were logged in the expected
+/// order.
+struct Events(RefCell<Option<Vec<u64>>>);
+
+impl Events {
+ const fn new() -> Self {
+ Self(RefCell::new(Some(Vec::new())))
+ }
+ #[track_caller]
+ fn assert(&self, max: u64) {
+ let buf = &self.0;
+ let v1 = buf.borrow().as_ref().unwrap().clone();
+ let mut v2 = buf.borrow().as_ref().unwrap().clone();
+ *buf.borrow_mut() = None;
+ v2.sort();
+ let uniq_len = v2.iter().collect::<HashSet<_>>().len();
+ // Check that the sequence is sorted.
+ assert_eq!(v1, v2);
+ // Check that there are no duplicates.
+ assert_eq!(v2.len(), uniq_len);
+ // Check that the length is the expected one.
+ assert_eq!(max, uniq_len as u64);
+ // Check that the last marker is the expected one.
+ assert_eq!(v2.last().unwrap(), &max);
+ }
+ /// Return an `Ok` value that logs its drop.
+ fn ok(&self, m: u64) -> Result<LogDrop<'_>, LogDrop<'_>> {
+ Ok(LogDrop(self, m))
+ }
+ /// Return an `Err` value that logs its drop.
+ fn err(&self, m: u64) -> Result<LogDrop<'_>, LogDrop<'_>> {
+ Err(LogDrop(self, m))
+ }
+ /// Log an event.
+ fn mark(&self, m: u64) {
+ self.0.borrow_mut().as_mut().unwrap().push(m);
+ }
+}
+
+impl Drop for Events {
+ fn drop(&mut self) {
+ if self.0.borrow().is_some() {
+ panic!("failed to call `Events::assert()`");
+ }
+ }
+}
+
+/// A type that logs its drop events.
+struct LogDrop<'b>(&'b Events, u64);
+
+impl<'b> Drop for LogDrop<'b> {
+ fn drop(&mut self) {
+ self.0.mark(self.1);
+ }
+}
diff --git a/tests/ui/drop/drop-order-comparisons.e2021.fixed b/tests/ui/drop/drop-order-comparisons.e2021.fixed
index 42f8059..b0f6eb9 100644
--- a/tests/ui/drop/drop-order-comparisons.e2021.fixed
+++ b/tests/ui/drop/drop-order-comparisons.e2021.fixed
@@ -1,3 +1,6 @@
+// N.B. drop-order-comparisons-let-chains.rs is part of this test.
+// It is separate because let chains cannot be parsed before Rust 2024.
+//
// This tests various aspects of the drop order with a focus on:
//
// - The lifetime of temporaries with the `if let` construct (and with
@@ -25,7 +28,6 @@
//@ run-pass
#![feature(if_let_guard)]
-#![cfg_attr(e2021, feature(let_chains))]
#![cfg_attr(e2021, warn(rust_2024_compatibility))]
fn t_bindings() {
@@ -313,59 +315,6 @@
#[cfg(e2021)]
#[rustfmt::skip]
-fn t_if_let_chains_then() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(5)
- && let Ok(_) = e.ok(8)
- && let Ok(_) = e.ok(7).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.ok(6).as_ref() {
- e.mark(3);
- };
- e.assert(9);
-}
-
-#[cfg(e2024)]
-#[rustfmt::skip]
-fn t_if_let_chains_then() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(8)
- && let Ok(_) = e.ok(7)
- && let Ok(_) = e.ok(6).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(5)
- && let Ok(_) = e.ok(4).as_ref() {
- e.mark(3);
- };
- e.assert(9);
-}
-
-#[rustfmt::skip]
-fn t_guard_if_let_chains_then() {
- let e = Events::new();
- _ = match () {
- () if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(8)
- && let Ok(_) = e.ok(7)
- && let Ok(_) = e.ok(6).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(5)
- && let Ok(_) = e.ok(4).as_ref() => {
- e.mark(3);
- }
- _ => {}
- };
- e.assert(9);
-}
-
-#[cfg(e2021)]
-#[rustfmt::skip]
fn t_if_let_nested_else() {
let e = Events::new();
_ = if e.err(1).is_ok() {} else {
@@ -470,59 +419,6 @@
e.assert(9);
}
-#[cfg(e2021)]
-#[rustfmt::skip]
-fn t_if_let_chains_then_else() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.ok(8)
- && let Ok(_) = e.ok(7).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(3)
- && let Ok(_) = e.err(6) {} else {
- e.mark(5);
- };
- e.assert(9);
-}
-
-#[cfg(e2024)]
-#[rustfmt::skip]
-fn t_if_let_chains_then_else() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(8).is_ok()
- && let Ok(_v) = e.ok(7)
- && let Ok(_) = e.ok(6)
- && let Ok(_) = e.ok(5).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.err(3) {} else {
- e.mark(9);
- };
- e.assert(9);
-}
-
-#[rustfmt::skip]
-fn t_guard_if_let_chains_then_else() {
- let e = Events::new();
- _ = match () {
- () if e.ok(1).is_ok()
- && let true = e.ok(8).is_ok()
- && let Ok(_v) = e.ok(7)
- && let Ok(_) = e.ok(6)
- && let Ok(_) = e.ok(5).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.err(3) => {}
- _ => {
- e.mark(9);
- }
- };
- e.assert(9);
-}
-
fn main() {
t_bindings();
t_tuples();
@@ -540,13 +436,9 @@
t_if_let_else_tailexpr();
t_if_let_nested_then();
t_let_else_chained_then();
- t_if_let_chains_then();
- t_guard_if_let_chains_then();
t_if_let_nested_else();
t_if_let_nested_then_else();
t_let_else_chained_then_else();
- t_if_let_chains_then_else();
- t_guard_if_let_chains_then_else();
}
// # Test scaffolding
diff --git a/tests/ui/drop/drop-order-comparisons.e2021.stderr b/tests/ui/drop/drop-order-comparisons.e2021.stderr
index 8b93376..15a3f27 100644
--- a/tests/ui/drop/drop-order-comparisons.e2021.stderr
+++ b/tests/ui/drop/drop-order-comparisons.e2021.stderr
@@ -1,5 +1,5 @@
warning: relative drop order changing in Rust 2024
- --> $DIR/drop-order-comparisons.rs:77:9
+ --> $DIR/drop-order-comparisons.rs:79:9
|
LL | _ = ({
| _________-
@@ -29,35 +29,35 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-tail-expr-scope.html>
note: `#3` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `#1` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `_v` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `#2` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
note: the lint level is defined here
- --> $DIR/drop-order-comparisons.rs:29:25
+ --> $DIR/drop-order-comparisons.rs:31:25
|
LL | #![cfg_attr(e2021, warn(rust_2024_compatibility))]
| ^^^^^^^^^^^^^^^^^^^^^^^
= note: `#[warn(tail_expr_drop_order)]` implied by `#[warn(rust_2024_compatibility)]`
warning: relative drop order changing in Rust 2024
- --> $DIR/drop-order-comparisons.rs:101:45
+ --> $DIR/drop-order-comparisons.rs:103:45
|
LL | _ = ({
| _________-
@@ -77,19 +77,19 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-tail-expr-scope.html>
note: `#2` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `#1` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
warning: relative drop order changing in Rust 2024
- --> $DIR/drop-order-comparisons.rs:101:19
+ --> $DIR/drop-order-comparisons.rs:103:19
|
LL | _ = ({
| _________-
@@ -109,19 +109,19 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-tail-expr-scope.html>
note: `#2` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `#1` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
warning: relative drop order changing in Rust 2024
- --> $DIR/drop-order-comparisons.rs:222:24
+ --> $DIR/drop-order-comparisons.rs:224:24
|
LL | _ = ({
| _________-
@@ -141,19 +141,19 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-tail-expr-scope.html>
note: `#2` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `#1` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
warning: relative drop order changing in Rust 2024
- --> $DIR/drop-order-comparisons.rs:248:24
+ --> $DIR/drop-order-comparisons.rs:250:24
|
LL | _ = ({
| _________-
@@ -173,19 +173,19 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-tail-expr-scope.html>
note: `#2` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: `#1` invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:124:13
+ --> $DIR/drop-order-comparisons.rs:126:13
|
LL | _ = (if let Ok(_) = e.ok(4).as_ref() {
| ^^^^^^^^^^^^-------^^^^^^^^^
@@ -195,12 +195,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:128:5
+ --> $DIR/drop-order-comparisons.rs:130:5
|
LL | }, e.mark(2), e.ok(3));
| ^
@@ -215,7 +215,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:146:13
+ --> $DIR/drop-order-comparisons.rs:148:13
|
LL | _ = (if let Ok(_) = e.err(4).as_ref() {} else {
| ^^^^^^^^^^^^--------^^^^^^^^^
@@ -225,12 +225,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:146:44
+ --> $DIR/drop-order-comparisons.rs:148:44
|
LL | _ = (if let Ok(_) = e.err(4).as_ref() {} else {
| ^
@@ -244,7 +244,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:248:12
+ --> $DIR/drop-order-comparisons.rs:250:12
|
LL | if let Ok(_) = e.err(4).as_ref() {} else {
| ^^^^^^^^^^^^--------^^^^^^^^^
@@ -254,12 +254,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:248:43
+ --> $DIR/drop-order-comparisons.rs:250:43
|
LL | if let Ok(_) = e.err(4).as_ref() {} else {
| ^
@@ -273,7 +273,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:372:12
+ --> $DIR/drop-order-comparisons.rs:321:12
|
LL | if let true = e.err(9).is_ok() {} else {
| ^^^^^^^^^^^--------^^^^^^^^
@@ -283,12 +283,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:372:41
+ --> $DIR/drop-order-comparisons.rs:321:41
|
LL | if let true = e.err(9).is_ok() {} else {
| ^
@@ -302,7 +302,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:375:12
+ --> $DIR/drop-order-comparisons.rs:324:12
|
LL | if let Ok(_v) = e.err(8) {} else {
| ^^^^^^^^^^^^^--------
@@ -312,12 +312,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:375:35
+ --> $DIR/drop-order-comparisons.rs:324:35
|
LL | if let Ok(_v) = e.err(8) {} else {
| ^
@@ -331,7 +331,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:378:12
+ --> $DIR/drop-order-comparisons.rs:327:12
|
LL | if let Ok(_) = e.err(7) {} else {
| ^^^^^^^^^^^^--------
@@ -341,12 +341,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:378:34
+ --> $DIR/drop-order-comparisons.rs:327:34
|
LL | if let Ok(_) = e.err(7) {} else {
| ^
@@ -360,7 +360,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:381:12
+ --> $DIR/drop-order-comparisons.rs:330:12
|
LL | if let Ok(_) = e.err(6).as_ref() {} else {
| ^^^^^^^^^^^^--------^^^^^^^^^
@@ -370,12 +370,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:381:43
+ --> $DIR/drop-order-comparisons.rs:330:43
|
LL | if let Ok(_) = e.err(6).as_ref() {} else {
| ^
@@ -389,7 +389,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:385:12
+ --> $DIR/drop-order-comparisons.rs:334:12
|
LL | if let Ok(_v) = e.err(5) {} else {
| ^^^^^^^^^^^^^--------
@@ -399,12 +399,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:385:35
+ --> $DIR/drop-order-comparisons.rs:334:35
|
LL | if let Ok(_v) = e.err(5) {} else {
| ^
@@ -418,7 +418,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:388:12
+ --> $DIR/drop-order-comparisons.rs:337:12
|
LL | if let Ok(_) = e.err(4) {} else {
| ^^^^^^^^^^^^--------
@@ -428,12 +428,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:388:34
+ --> $DIR/drop-order-comparisons.rs:337:34
|
LL | if let Ok(_) = e.err(4) {} else {
| ^
@@ -447,7 +447,7 @@
|
warning: `if let` assigns a shorter lifetime since Edition 2024
- --> $DIR/drop-order-comparisons.rs:424:12
+ --> $DIR/drop-order-comparisons.rs:373:12
|
LL | if let Ok(_) = e.err(4).as_ref() {} else {
| ^^^^^^^^^^^^--------^^^^^^^^^
@@ -457,12 +457,12 @@
= warning: this changes meaning in Rust 2024
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
note: value invokes this custom destructor
- --> $DIR/drop-order-comparisons.rs:612:1
+ --> $DIR/drop-order-comparisons.rs:504:1
|
LL | impl<'b> Drop for LogDrop<'b> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: the value is now dropped here in Edition 2024
- --> $DIR/drop-order-comparisons.rs:424:43
+ --> $DIR/drop-order-comparisons.rs:373:43
|
LL | if let Ok(_) = e.err(4).as_ref() {} else {
| ^
diff --git a/tests/ui/drop/drop-order-comparisons.rs b/tests/ui/drop/drop-order-comparisons.rs
index e742515..257c0c1 100644
--- a/tests/ui/drop/drop-order-comparisons.rs
+++ b/tests/ui/drop/drop-order-comparisons.rs
@@ -1,3 +1,6 @@
+// N.B. drop-order-comparisons-let-chains.rs is part of this test.
+// It is separate because let chains cannot be parsed before Rust 2024.
+//
// This tests various aspects of the drop order with a focus on:
//
// - The lifetime of temporaries with the `if let` construct (and with
@@ -25,7 +28,6 @@
//@ run-pass
#![feature(if_let_guard)]
-#![cfg_attr(e2021, feature(let_chains))]
#![cfg_attr(e2021, warn(rust_2024_compatibility))]
fn t_bindings() {
@@ -313,59 +315,6 @@ fn t_let_else_chained_then() {
#[cfg(e2021)]
#[rustfmt::skip]
-fn t_if_let_chains_then() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(5)
- && let Ok(_) = e.ok(8)
- && let Ok(_) = e.ok(7).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.ok(6).as_ref() {
- e.mark(3);
- };
- e.assert(9);
-}
-
-#[cfg(e2024)]
-#[rustfmt::skip]
-fn t_if_let_chains_then() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(8)
- && let Ok(_) = e.ok(7)
- && let Ok(_) = e.ok(6).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(5)
- && let Ok(_) = e.ok(4).as_ref() {
- e.mark(3);
- };
- e.assert(9);
-}
-
-#[rustfmt::skip]
-fn t_guard_if_let_chains_then() {
- let e = Events::new();
- _ = match () {
- () if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(8)
- && let Ok(_) = e.ok(7)
- && let Ok(_) = e.ok(6).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(5)
- && let Ok(_) = e.ok(4).as_ref() => {
- e.mark(3);
- }
- _ => {}
- };
- e.assert(9);
-}
-
-#[cfg(e2021)]
-#[rustfmt::skip]
fn t_if_let_nested_else() {
let e = Events::new();
_ = if e.err(1).is_ok() {} else {
@@ -470,59 +419,6 @@ fn t_let_else_chained_then_else() {
e.assert(9);
}
-#[cfg(e2021)]
-#[rustfmt::skip]
-fn t_if_let_chains_then_else() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(9).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.ok(8)
- && let Ok(_) = e.ok(7).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(3)
- && let Ok(_) = e.err(6) {} else {
- e.mark(5);
- };
- e.assert(9);
-}
-
-#[cfg(e2024)]
-#[rustfmt::skip]
-fn t_if_let_chains_then_else() {
- let e = Events::new();
- _ = if e.ok(1).is_ok()
- && let true = e.ok(8).is_ok()
- && let Ok(_v) = e.ok(7)
- && let Ok(_) = e.ok(6)
- && let Ok(_) = e.ok(5).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.err(3) {} else {
- e.mark(9);
- };
- e.assert(9);
-}
-
-#[rustfmt::skip]
-fn t_guard_if_let_chains_then_else() {
- let e = Events::new();
- _ = match () {
- () if e.ok(1).is_ok()
- && let true = e.ok(8).is_ok()
- && let Ok(_v) = e.ok(7)
- && let Ok(_) = e.ok(6)
- && let Ok(_) = e.ok(5).as_ref()
- && e.ok(2).is_ok()
- && let Ok(_v) = e.ok(4)
- && let Ok(_) = e.err(3) => {}
- _ => {
- e.mark(9);
- }
- };
- e.assert(9);
-}
-
fn main() {
t_bindings();
t_tuples();
@@ -540,13 +436,9 @@ fn main() {
t_if_let_else_tailexpr();
t_if_let_nested_then();
t_let_else_chained_then();
- t_if_let_chains_then();
- t_guard_if_let_chains_then();
t_if_let_nested_else();
t_if_let_nested_then_else();
t_let_else_chained_then_else();
- t_if_let_chains_then_else();
- t_guard_if_let_chains_then_else();
}
// # Test scaffolding
diff --git a/tests/ui/drop/drop_order.rs b/tests/ui/drop/drop_order.rs
index 34b1a0e..ead498a 100644
--- a/tests/ui/drop/drop_order.rs
+++ b/tests/ui/drop/drop_order.rs
@@ -5,8 +5,6 @@
//@ [edition2024] compile-flags: -Z lint-mir
//@ [edition2024] edition: 2024
-#![cfg_attr(edition2021, feature(let_chains))]
-
use std::cell::RefCell;
use std::convert::TryInto;
@@ -210,68 +208,6 @@ fn mixed_and_or_chain(&self) {
}
}
- fn let_chain(&self) {
- // take the "then" branch
- if self.option_loud_drop(1).is_some() // 1
- && self.option_loud_drop(2).is_some() // 2
- && let Some(_d) = self.option_loud_drop(4) { // 4
- self.print(3); // 3
- }
-
- #[cfg(edition2021)]
- // take the "else" branch
- if self.option_loud_drop(5).is_some() // 1
- && self.option_loud_drop(6).is_some() // 2
- && let None = self.option_loud_drop(8) { // 4
- unreachable!();
- } else {
- self.print(7); // 3
- }
- #[cfg(edition2024)]
- // take the "else" branch
- if self.option_loud_drop(5).is_some() // 1
- && self.option_loud_drop(6).is_some() // 2
- && let None = self.option_loud_drop(7) { // 4
- unreachable!();
- } else {
- self.print(8); // 3
- }
-
- // let exprs interspersed
- if self.option_loud_drop(9).is_some() // 1
- && let Some(_d) = self.option_loud_drop(13) // 5
- && self.option_loud_drop(10).is_some() // 2
- && let Some(_e) = self.option_loud_drop(12) { // 4
- self.print(11); // 3
- }
-
- // let exprs first
- if let Some(_d) = self.option_loud_drop(18) // 5
- && let Some(_e) = self.option_loud_drop(17) // 4
- && self.option_loud_drop(14).is_some() // 1
- && self.option_loud_drop(15).is_some() { // 2
- self.print(16); // 3
- }
-
- // let exprs last
- if self.option_loud_drop(19).is_some() // 1
- && self.option_loud_drop(20).is_some() // 2
- && let Some(_d) = self.option_loud_drop(23) // 5
- && let Some(_e) = self.option_loud_drop(22) { // 4
- self.print(21); // 3
- }
- }
-
- fn while_(&self) {
- let mut v = self.option_loud_drop(4);
- while let Some(_d) = v
- && self.option_loud_drop(1).is_some()
- && self.option_loud_drop(2).is_some() {
- self.print(3);
- v = None;
- }
- }
-
fn assert_sorted(self) {
assert!(
self.0
@@ -313,14 +249,4 @@ fn main() {
let collector = DropOrderCollector::default();
collector.match_();
collector.assert_sorted();
-
- println!("-- let chain --");
- let collector = DropOrderCollector::default();
- collector.let_chain();
- collector.assert_sorted();
-
- println!("-- while --");
- let collector = DropOrderCollector::default();
- collector.while_();
- collector.assert_sorted();
}
diff --git a/tests/ui/drop/drop_order_let_chain.rs b/tests/ui/drop/drop_order_let_chain.rs
new file mode 100644
index 0000000..8d1b71c
--- /dev/null
+++ b/tests/ui/drop/drop_order_let_chain.rs
@@ -0,0 +1,103 @@
+//@ run-pass
+//@ compile-flags: -Z validate-mir
+//@ edition: 2024
+
+use std::cell::RefCell;
+use std::convert::TryInto;
+
+#[derive(Default)]
+struct DropOrderCollector(RefCell<Vec<u32>>);
+
+struct LoudDrop<'a>(&'a DropOrderCollector, u32);
+
+impl Drop for LoudDrop<'_> {
+ fn drop(&mut self) {
+ println!("{}", self.1);
+ self.0.0.borrow_mut().push(self.1);
+ }
+}
+
+impl DropOrderCollector {
+ fn option_loud_drop(&self, n: u32) -> Option<LoudDrop<'_>> {
+ Some(LoudDrop(self, n))
+ }
+
+ fn print(&self, n: u32) {
+ println!("{}", n);
+ self.0.borrow_mut().push(n)
+ }
+
+ fn let_chain(&self) {
+ // take the "then" branch
+ if self.option_loud_drop(1).is_some() // 1
+ && self.option_loud_drop(2).is_some() // 2
+ && let Some(_d) = self.option_loud_drop(4) { // 4
+ self.print(3); // 3
+ }
+
+ // take the "else" branch
+ if self.option_loud_drop(5).is_some() // 1
+ && self.option_loud_drop(6).is_some() // 2
+ && let None = self.option_loud_drop(7) { // 4
+ unreachable!();
+ } else {
+ self.print(8); // 3
+ }
+
+ // let exprs interspersed
+ if self.option_loud_drop(9).is_some() // 1
+ && let Some(_d) = self.option_loud_drop(13) // 5
+ && self.option_loud_drop(10).is_some() // 2
+ && let Some(_e) = self.option_loud_drop(12) { // 4
+ self.print(11); // 3
+ }
+
+ // let exprs first
+ if let Some(_d) = self.option_loud_drop(18) // 5
+ && let Some(_e) = self.option_loud_drop(17) // 4
+ && self.option_loud_drop(14).is_some() // 1
+ && self.option_loud_drop(15).is_some() { // 2
+ self.print(16); // 3
+ }
+
+ // let exprs last
+ if self.option_loud_drop(19).is_some() // 1
+ && self.option_loud_drop(20).is_some() // 2
+ && let Some(_d) = self.option_loud_drop(23) // 5
+ && let Some(_e) = self.option_loud_drop(22) { // 4
+ self.print(21); // 3
+ }
+ }
+
+ fn while_(&self) {
+ let mut v = self.option_loud_drop(4);
+ while let Some(_d) = v
+ && self.option_loud_drop(1).is_some()
+ && self.option_loud_drop(2).is_some() {
+ self.print(3);
+ v = None;
+ }
+ }
+
+ fn assert_sorted(self) {
+ assert!(
+ self.0
+ .into_inner()
+ .into_iter()
+ .enumerate()
+ .all(|(idx, item)| idx + 1 == item.try_into().unwrap())
+ );
+ }
+}
+
+fn main() {
+ println!("-- let chain --");
+ let collector = DropOrderCollector::default();
+ collector.let_chain();
+ collector.assert_sorted();
+
+ println!("-- while --");
+ let collector = DropOrderCollector::default();
+ collector.while_();
+ collector.assert_sorted();
+}
diff --git a/tests/ui/drop/issue-100276.rs b/tests/ui/drop/issue-100276.rs
index 5d212b3..c8e25e4 100644
--- a/tests/ui/drop/issue-100276.rs
+++ b/tests/ui/drop/issue-100276.rs
@@ -1,11 +1,6 @@
//@ check-pass
-//@ compile-flags: -Z validate-mir
-//@ revisions: edition2021 edition2024
-//@ [edition2021] edition: 2021
-//@ [edition2024] compile-flags: -Z lint-mir
-//@ [edition2024] edition: 2024
-
-#![cfg_attr(edition2021, feature(let_chains))]
+//@ compile-flags: -Z lint-mir -Z validate-mir
+//@ edition: 2024
fn let_chains(entry: std::io::Result<std::fs::DirEntry>) {
if let Ok(entry) = entry
diff --git a/tests/ui/macros/stringify.rs b/tests/ui/macros/stringify.rs
index c858051..fa06da5 100644
--- a/tests/ui/macros/stringify.rs
+++ b/tests/ui/macros/stringify.rs
@@ -1,5 +1,5 @@
//@ run-pass
-//@ edition:2021
+//@ edition:2024
//@ compile-flags: --test
#![allow(incomplete_features)]
@@ -10,7 +10,6 @@
#![feature(decl_macro)]
#![feature(explicit_tail_calls)]
#![feature(if_let_guard)]
-#![feature(let_chains)]
#![feature(more_qualified_paths)]
#![feature(never_patterns)]
#![feature(trait_alias)]
diff --git a/tests/ui/mir/mir_let_chains_drop_order.rs b/tests/ui/mir/mir_let_chains_drop_order.rs
index 4794f34..8a54f21 100644
--- a/tests/ui/mir/mir_let_chains_drop_order.rs
+++ b/tests/ui/mir/mir_let_chains_drop_order.rs
@@ -1,12 +1,9 @@
//@ run-pass
//@ needs-unwind
-//@ revisions: edition2021 edition2024
-//@ [edition2021] edition: 2021
-//@ [edition2024] edition: 2024
+//@ edition: 2024
// See `mir_drop_order.rs` for more information
-#![cfg_attr(edition2021, feature(let_chains))]
#![allow(irrefutable_let_patterns)]
use std::cell::RefCell;
@@ -64,9 +61,6 @@ fn main() {
d(10, None)
},
);
- #[cfg(edition2021)]
- assert_eq!(get(), vec![8, 7, 1, 3, 2]);
- #[cfg(edition2024)]
assert_eq!(get(), vec![3, 2, 8, 7, 1]);
}
assert_eq!(get(), vec![0, 4, 6, 9, 5]);
@@ -101,8 +95,5 @@ fn main() {
panic::panic_any(InjectedFailure),
);
});
- #[cfg(edition2021)]
- assert_eq!(get(), vec![20, 17, 15, 11, 19, 18, 16, 12, 14, 13]);
- #[cfg(edition2024)]
assert_eq!(get(), vec![14, 13, 19, 18, 20, 17, 15, 11, 16, 12]);
}
diff --git a/tests/ui/pattern/usefulness/conflicting_bindings.rs b/tests/ui/pattern/usefulness/conflicting_bindings.rs
index 16737e0..883ce43 100644
--- a/tests/ui/pattern/usefulness/conflicting_bindings.rs
+++ b/tests/ui/pattern/usefulness/conflicting_bindings.rs
@@ -1,4 +1,6 @@
-#![feature(if_let_guard, let_chains)]
+//@ edition: 2024
+
+#![feature(if_let_guard)]
fn main() {
let mut x = Some(String::new());
diff --git a/tests/ui/pattern/usefulness/conflicting_bindings.stderr b/tests/ui/pattern/usefulness/conflicting_bindings.stderr
index 6f6504e..7ab3393 100644
--- a/tests/ui/pattern/usefulness/conflicting_bindings.stderr
+++ b/tests/ui/pattern/usefulness/conflicting_bindings.stderr
@@ -1,5 +1,5 @@
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:5:9
+ --> $DIR/conflicting_bindings.rs:7:9
|
LL | let ref mut y @ ref mut z = x;
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -7,7 +7,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:7:14
+ --> $DIR/conflicting_bindings.rs:9:14
|
LL | let Some(ref mut y @ ref mut z) = x else { return };
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -15,7 +15,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:9:17
+ --> $DIR/conflicting_bindings.rs:11:17
|
LL | if let Some(ref mut y @ ref mut z) = x {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -23,7 +23,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:11:17
+ --> $DIR/conflicting_bindings.rs:13:17
|
LL | if let Some(ref mut y @ ref mut z) = x && true {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -31,7 +31,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:13:43
+ --> $DIR/conflicting_bindings.rs:15:43
|
LL | if let Some(_) = Some(()) && let Some(ref mut y @ ref mut z) = x && true {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -39,7 +39,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:15:20
+ --> $DIR/conflicting_bindings.rs:17:20
|
LL | while let Some(ref mut y @ ref mut z) = x {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -47,7 +47,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:17:20
+ --> $DIR/conflicting_bindings.rs:19:20
|
LL | while let Some(ref mut y @ ref mut z) = x && true {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -55,7 +55,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:20:9
+ --> $DIR/conflicting_bindings.rs:22:9
|
LL | ref mut y @ ref mut z => {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
@@ -63,7 +63,7 @@
| value is mutably borrowed by `y` here
error: cannot borrow value as mutable more than once at a time
- --> $DIR/conflicting_bindings.rs:23:24
+ --> $DIR/conflicting_bindings.rs:25:24
|
LL | () if let Some(ref mut y @ ref mut z) = x => {}
| ^^^^^^^^^ --------- value is mutably borrowed by `z` here
diff --git a/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope-let-chains.rs b/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope-let-chains.rs
new file mode 100644
index 0000000..4d2eac2
--- /dev/null
+++ b/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope-let-chains.rs
@@ -0,0 +1,57 @@
+// Ensure that temporaries in if-let guards live for the arm
+// regression test for #118593
+
+//@ check-pass
+//@ edition: 2024
+
+#![feature(if_let_guard)]
+
+fn get_temp() -> Option<String> {
+ None
+}
+
+fn let_let_chain_guard(num: u8) {
+ match num {
+ 5 | 6
+ if let Some(ref a) = get_temp()
+ && let Some(ref b) = get_temp() =>
+ {
+ let _x = a;
+ let _y = b;
+ }
+ _ => {}
+ }
+ match num {
+ 7 | 8
+ if let Some(ref mut c) = get_temp()
+ && let Some(ref mut d) = get_temp() =>
+ {
+ let _w = c;
+ let _z = d;
+ }
+ _ => {}
+ }
+}
+
+fn let_cond_chain_guard(num: u8) {
+ match num {
+ 9 | 10
+ if let Some(ref a) = get_temp()
+ && true =>
+ {
+ let _x = a;
+ }
+ _ => {}
+ }
+ match num {
+ 11 | 12
+ if let Some(ref mut b) = get_temp()
+ && true =>
+ {
+ let _w = b;
+ }
+ _ => {}
+ }
+}
+
+fn main() {}
diff --git a/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope.rs b/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope.rs
index 0578b82..59e33bb 100644
--- a/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope.rs
+++ b/tests/ui/rfcs/rfc-2294-if-let-guard/drop-scope.rs
@@ -4,7 +4,6 @@
//@ check-pass
#![feature(if_let_guard)]
-#![feature(let_chains)]
fn get_temp() -> Option<String> {
None
@@ -25,48 +24,4 @@ fn let_guard(num: u8) {
}
}
-fn let_let_chain_guard(num: u8) {
- match num {
- 5 | 6
- if let Some(ref a) = get_temp()
- && let Some(ref b) = get_temp() =>
- {
- let _x = a;
- let _y = b;
- }
- _ => {}
- }
- match num {
- 7 | 8
- if let Some(ref mut c) = get_temp()
- && let Some(ref mut d) = get_temp() =>
- {
- let _w = c;
- let _z = d;
- }
- _ => {}
- }
-}
-
-fn let_cond_chain_guard(num: u8) {
- match num {
- 9 | 10
- if let Some(ref a) = get_temp()
- && true =>
- {
- let _x = a;
- }
- _ => {}
- }
- match num {
- 11 | 12
- if let Some(ref mut b) = get_temp()
- && true =>
- {
- let _w = b;
- }
- _ => {}
- }
-}
-
fn main() {}
diff --git a/tests/ui/rfcs/rfc-2294-if-let-guard/partially-macro-expanded.rs b/tests/ui/rfcs/rfc-2294-if-let-guard/partially-macro-expanded.rs
index e836b0b..294a0d0 100644
--- a/tests/ui/rfcs/rfc-2294-if-let-guard/partially-macro-expanded.rs
+++ b/tests/ui/rfcs/rfc-2294-if-let-guard/partially-macro-expanded.rs
@@ -2,7 +2,6 @@
//@ check-pass
#![feature(if_let_guard)]
-#![feature(let_chains)]
macro_rules! m {
(pattern $i:ident) => { Some($i) };
diff --git a/tests/ui/rfcs/rfc-2294-if-let-guard/scope.rs b/tests/ui/rfcs/rfc-2294-if-let-guard/scope.rs
index 56a6fb5..47cc7a6 100644
--- a/tests/ui/rfcs/rfc-2294-if-let-guard/scope.rs
+++ b/tests/ui/rfcs/rfc-2294-if-let-guard/scope.rs
@@ -3,7 +3,6 @@
//@run-pass
#![feature(if_let_guard)]
-#![feature(let_chains)]
#![allow(irrefutable_let_patterns)]
fn lhs_let(opt: Option<bool>) {
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.feature.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.e2021.stderr
similarity index 80%
copy from tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.feature.stderr
copy to tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.e2021.stderr
index 141a6d2..15e7be8 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.feature.stderr
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.e2021.stderr
@@ -1,239 +1,263 @@
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:33:9
+ --> $DIR/disallowed-positions.rs:32:9
|
LL | if (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:33:9
+ --> $DIR/disallowed-positions.rs:32:9
|
LL | if (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:36:11
+ --> $DIR/disallowed-positions.rs:35:11
|
LL | if (((let 0 = 1))) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:36:11
+ --> $DIR/disallowed-positions.rs:35:11
|
LL | if (((let 0 = 1))) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:39:9
+ --> $DIR/disallowed-positions.rs:38:9
|
LL | if (let 0 = 1) && true {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:39:9
+ --> $DIR/disallowed-positions.rs:38:9
|
LL | if (let 0 = 1) && true {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:42:17
+ --> $DIR/disallowed-positions.rs:41:17
|
LL | if true && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:42:17
+ --> $DIR/disallowed-positions.rs:41:17
|
LL | if true && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:9
+ --> $DIR/disallowed-positions.rs:44:9
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:9
+ --> $DIR/disallowed-positions.rs:44:9
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:24
+ --> $DIR/disallowed-positions.rs:44:24
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:24
+ --> $DIR/disallowed-positions.rs:44:24
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:48:8
+ |
+LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:48:21
+ |
+LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
+ | ^^^^^^^^^
+
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:48
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:61
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:59:12
+ --> $DIR/disallowed-positions.rs:58:12
|
LL | while (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:59:12
+ --> $DIR/disallowed-positions.rs:58:12
|
LL | while (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:62:14
+ --> $DIR/disallowed-positions.rs:61:14
|
LL | while (((let 0 = 1))) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:62:14
+ --> $DIR/disallowed-positions.rs:61:14
|
LL | while (((let 0 = 1))) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:65:12
+ --> $DIR/disallowed-positions.rs:64:12
|
LL | while (let 0 = 1) && true {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:65:12
+ --> $DIR/disallowed-positions.rs:64:12
|
LL | while (let 0 = 1) && true {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:68:20
+ --> $DIR/disallowed-positions.rs:67:20
|
LL | while true && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:68:20
+ --> $DIR/disallowed-positions.rs:67:20
|
LL | while true && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:12
+ --> $DIR/disallowed-positions.rs:70:12
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:12
+ --> $DIR/disallowed-positions.rs:70:12
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:27
+ --> $DIR/disallowed-positions.rs:70:27
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:27
+ --> $DIR/disallowed-positions.rs:70:27
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:74:11
+ |
+LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:74:24
+ |
+LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
+ | ^^^^^^^^^
+
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:51
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:64
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:103:9
+ --> $DIR/disallowed-positions.rs:102:9
|
LL | if &let 0 = 0 {}
| ^^^^^^^^^
@@ -241,7 +265,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:106:9
+ --> $DIR/disallowed-positions.rs:105:9
|
LL | if !let 0 = 0 {}
| ^^^^^^^^^
@@ -249,7 +273,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:108:9
+ --> $DIR/disallowed-positions.rs:107:9
|
LL | if *let 0 = 0 {}
| ^^^^^^^^^
@@ -257,7 +281,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:110:9
+ --> $DIR/disallowed-positions.rs:109:9
|
LL | if -let 0 = 0 {}
| ^^^^^^^^^
@@ -265,7 +289,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:118:9
+ --> $DIR/disallowed-positions.rs:117:9
|
LL | if (let 0 = 0)? {}
| ^^^^^^^^^
@@ -273,13 +297,13 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:121:13
+ --> $DIR/disallowed-positions.rs:120:13
|
LL | if true || let 0 = 0 {}
| ^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:123:17
+ --> $DIR/disallowed-positions.rs:122:17
|
LL | if (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -287,7 +311,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:125:25
+ --> $DIR/disallowed-positions.rs:124:25
|
LL | if true && (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -295,7 +319,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:127:25
+ --> $DIR/disallowed-positions.rs:126:25
|
LL | if true || (true && let 0 = 0) {}
| ^^^^^^^^^
@@ -303,7 +327,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:131:12
+ --> $DIR/disallowed-positions.rs:130:12
|
LL | if x = let 0 = 0 {}
| ^^^
@@ -311,7 +335,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:134:15
+ --> $DIR/disallowed-positions.rs:133:15
|
LL | if true..(let 0 = 0) {}
| ^^^^^^^^^
@@ -319,7 +343,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:137:11
+ --> $DIR/disallowed-positions.rs:136:11
|
LL | if ..(let 0 = 0) {}
| ^^^^^^^^^
@@ -327,7 +351,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:139:9
+ --> $DIR/disallowed-positions.rs:138:9
|
LL | if (let 0 = 0).. {}
| ^^^^^^^^^
@@ -335,7 +359,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:143:8
+ --> $DIR/disallowed-positions.rs:142:8
|
LL | if let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -343,7 +367,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:146:8
+ --> $DIR/disallowed-positions.rs:145:8
|
LL | if let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -351,7 +375,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:152:8
+ --> $DIR/disallowed-positions.rs:151:8
|
LL | if let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -359,7 +383,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:158:8
+ --> $DIR/disallowed-positions.rs:157:8
|
LL | if let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -367,7 +391,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:162:19
+ --> $DIR/disallowed-positions.rs:161:19
|
LL | if let true = let true = true {}
| ^^^
@@ -375,7 +399,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:165:15
+ --> $DIR/disallowed-positions.rs:164:15
|
LL | if return let 0 = 0 {}
| ^^^
@@ -383,7 +407,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:168:21
+ --> $DIR/disallowed-positions.rs:167:21
|
LL | loop { if break let 0 = 0 {} }
| ^^^
@@ -391,7 +415,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:171:15
+ --> $DIR/disallowed-positions.rs:170:15
|
LL | if (match let 0 = 0 { _ => { false } }) {}
| ^^^
@@ -399,7 +423,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:174:9
+ --> $DIR/disallowed-positions.rs:173:9
|
LL | if (let 0 = 0, false).1 {}
| ^^^^^^^^^
@@ -407,7 +431,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:177:9
+ --> $DIR/disallowed-positions.rs:176:9
|
LL | if (let 0 = 0,) {}
| ^^^^^^^^^
@@ -415,7 +439,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:181:13
+ --> $DIR/disallowed-positions.rs:180:13
|
LL | if (let 0 = 0).await {}
| ^^^^^^^^^
@@ -423,7 +447,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:185:12
+ --> $DIR/disallowed-positions.rs:184:12
|
LL | if (|| let 0 = 0) {}
| ^^^
@@ -431,7 +455,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:188:9
+ --> $DIR/disallowed-positions.rs:187:9
|
LL | if (let 0 = 0)() {}
| ^^^^^^^^^
@@ -439,7 +463,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:194:12
+ --> $DIR/disallowed-positions.rs:193:12
|
LL | while &let 0 = 0 {}
| ^^^^^^^^^
@@ -447,7 +471,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:197:12
+ --> $DIR/disallowed-positions.rs:196:12
|
LL | while !let 0 = 0 {}
| ^^^^^^^^^
@@ -455,7 +479,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:199:12
+ --> $DIR/disallowed-positions.rs:198:12
|
LL | while *let 0 = 0 {}
| ^^^^^^^^^
@@ -463,7 +487,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:201:12
+ --> $DIR/disallowed-positions.rs:200:12
|
LL | while -let 0 = 0 {}
| ^^^^^^^^^
@@ -471,7 +495,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:209:12
+ --> $DIR/disallowed-positions.rs:208:12
|
LL | while (let 0 = 0)? {}
| ^^^^^^^^^
@@ -479,13 +503,13 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:212:16
+ --> $DIR/disallowed-positions.rs:211:16
|
LL | while true || let 0 = 0 {}
| ^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:214:20
+ --> $DIR/disallowed-positions.rs:213:20
|
LL | while (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -493,7 +517,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:216:28
+ --> $DIR/disallowed-positions.rs:215:28
|
LL | while true && (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -501,7 +525,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:218:28
+ --> $DIR/disallowed-positions.rs:217:28
|
LL | while true || (true && let 0 = 0) {}
| ^^^^^^^^^
@@ -509,7 +533,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:222:15
+ --> $DIR/disallowed-positions.rs:221:15
|
LL | while x = let 0 = 0 {}
| ^^^
@@ -517,7 +541,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:225:18
+ --> $DIR/disallowed-positions.rs:224:18
|
LL | while true..(let 0 = 0) {}
| ^^^^^^^^^
@@ -525,7 +549,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:228:14
+ --> $DIR/disallowed-positions.rs:227:14
|
LL | while ..(let 0 = 0) {}
| ^^^^^^^^^
@@ -533,7 +557,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:230:12
+ --> $DIR/disallowed-positions.rs:229:12
|
LL | while (let 0 = 0).. {}
| ^^^^^^^^^
@@ -541,7 +565,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:234:11
+ --> $DIR/disallowed-positions.rs:233:11
|
LL | while let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -549,7 +573,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:237:11
+ --> $DIR/disallowed-positions.rs:236:11
|
LL | while let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -557,7 +581,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:243:11
+ --> $DIR/disallowed-positions.rs:242:11
|
LL | while let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -565,7 +589,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:249:11
+ --> $DIR/disallowed-positions.rs:248:11
|
LL | while let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -573,7 +597,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:253:22
+ --> $DIR/disallowed-positions.rs:252:22
|
LL | while let true = let true = true {}
| ^^^
@@ -581,7 +605,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:256:18
+ --> $DIR/disallowed-positions.rs:255:18
|
LL | while return let 0 = 0 {}
| ^^^
@@ -589,7 +613,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:259:39
+ --> $DIR/disallowed-positions.rs:258:39
|
LL | 'outer: loop { while break 'outer let 0 = 0 {} }
| ^^^
@@ -597,7 +621,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:262:18
+ --> $DIR/disallowed-positions.rs:261:18
|
LL | while (match let 0 = 0 { _ => { false } }) {}
| ^^^
@@ -605,7 +629,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:265:12
+ --> $DIR/disallowed-positions.rs:264:12
|
LL | while (let 0 = 0, false).1 {}
| ^^^^^^^^^
@@ -613,7 +637,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:268:12
+ --> $DIR/disallowed-positions.rs:267:12
|
LL | while (let 0 = 0,) {}
| ^^^^^^^^^
@@ -621,7 +645,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:272:16
+ --> $DIR/disallowed-positions.rs:271:16
|
LL | while (let 0 = 0).await {}
| ^^^^^^^^^
@@ -629,7 +653,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:276:15
+ --> $DIR/disallowed-positions.rs:275:15
|
LL | while (|| let 0 = 0) {}
| ^^^
@@ -637,7 +661,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:279:12
+ --> $DIR/disallowed-positions.rs:278:12
|
LL | while (let 0 = 0)() {}
| ^^^^^^^^^
@@ -645,7 +669,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:296:6
+ --> $DIR/disallowed-positions.rs:295:6
|
LL | &let 0 = 0;
| ^^^
@@ -653,7 +677,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:299:6
+ --> $DIR/disallowed-positions.rs:298:6
|
LL | !let 0 = 0;
| ^^^
@@ -661,7 +685,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:301:6
+ --> $DIR/disallowed-positions.rs:300:6
|
LL | *let 0 = 0;
| ^^^
@@ -669,7 +693,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:303:6
+ --> $DIR/disallowed-positions.rs:302:6
|
LL | -let 0 = 0;
| ^^^
@@ -677,7 +701,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:305:13
+ --> $DIR/disallowed-positions.rs:304:13
|
LL | let _ = let _ = 3;
| ^^^
@@ -685,7 +709,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:313:6
+ --> $DIR/disallowed-positions.rs:312:6
|
LL | (let 0 = 0)?;
| ^^^
@@ -693,7 +717,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:316:13
+ --> $DIR/disallowed-positions.rs:315:13
|
LL | true || let 0 = 0;
| ^^^
@@ -701,7 +725,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:318:14
+ --> $DIR/disallowed-positions.rs:317:14
|
LL | (true || let 0 = 0);
| ^^^
@@ -709,7 +733,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:320:22
+ --> $DIR/disallowed-positions.rs:319:22
|
LL | true && (true || let 0 = 0);
| ^^^
@@ -717,7 +741,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:324:9
+ --> $DIR/disallowed-positions.rs:323:9
|
LL | x = let 0 = 0;
| ^^^
@@ -725,7 +749,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:327:12
+ --> $DIR/disallowed-positions.rs:326:12
|
LL | true..(let 0 = 0);
| ^^^
@@ -733,7 +757,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:329:8
+ --> $DIR/disallowed-positions.rs:328:8
|
LL | ..(let 0 = 0);
| ^^^
@@ -741,7 +765,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:331:6
+ --> $DIR/disallowed-positions.rs:330:6
|
LL | (let 0 = 0)..;
| ^^^
@@ -749,7 +773,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:334:6
+ --> $DIR/disallowed-positions.rs:333:6
|
LL | (let Range { start: _, end: _ } = true..true || false);
| ^^^
@@ -757,7 +781,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:6
+ --> $DIR/disallowed-positions.rs:337:6
|
LL | (let true = let true = true);
| ^^^
@@ -765,7 +789,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:17
+ --> $DIR/disallowed-positions.rs:337:17
|
LL | (let true = let true = true);
| ^^^
@@ -773,7 +797,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:344:25
+ --> $DIR/disallowed-positions.rs:343:25
|
LL | let x = true && let y = 1;
| ^^^
@@ -781,7 +805,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:350:19
+ --> $DIR/disallowed-positions.rs:349:19
|
LL | [1, 2, 3][let _ = ()]
| ^^^
@@ -789,7 +813,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:355:6
+ --> $DIR/disallowed-positions.rs:354:6
|
LL | &let 0 = 0
| ^^^
@@ -797,7 +821,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:366:17
+ --> $DIR/disallowed-positions.rs:365:17
|
LL | true && let 1 = 1
| ^^^
@@ -805,7 +829,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:371:17
+ --> $DIR/disallowed-positions.rs:370:17
|
LL | true && let 1 = 1
| ^^^
@@ -813,7 +837,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:376:17
+ --> $DIR/disallowed-positions.rs:375:17
|
LL | true && let 1 = 1
| ^^^
@@ -821,7 +845,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:387:17
+ --> $DIR/disallowed-positions.rs:386:17
|
LL | true && let 1 = 1
| ^^^
@@ -829,7 +853,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expressions must be enclosed in braces to be used as const generic arguments
- --> $DIR/disallowed-positions.rs:387:9
+ --> $DIR/disallowed-positions.rs:386:9
|
LL | true && let 1 = 1
| ^^^^^^^^^^^^^^^^^
@@ -840,124 +864,154 @@
| + +
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:397:9
+ --> $DIR/disallowed-positions.rs:396:9
|
LL | if (let Some(a) = opt && true) {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:397:9
+ --> $DIR/disallowed-positions.rs:396:9
|
LL | if (let Some(a) = opt && true) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:401:9
+ --> $DIR/disallowed-positions.rs:400:9
|
LL | if (let Some(a) = opt) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:401:9
+ --> $DIR/disallowed-positions.rs:400:9
|
LL | if (let Some(a) = opt) && true {
| ^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:9
+ --> $DIR/disallowed-positions.rs:403:9
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:9
+ --> $DIR/disallowed-positions.rs:403:9
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:32
+ --> $DIR/disallowed-positions.rs:403:32
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:32
+ --> $DIR/disallowed-positions.rs:403:32
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:407:8
+ |
+LL | if let Some(a) = opt && (true && true) {
+ | ^^^^^^^^^^^^^^^^^
+
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:9
+ --> $DIR/disallowed-positions.rs:411:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:9
+ --> $DIR/disallowed-positions.rs:411:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:31
+ --> $DIR/disallowed-positions.rs:411:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:31
+ --> $DIR/disallowed-positions.rs:411:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:9
+ --> $DIR/disallowed-positions.rs:415:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:9
+ --> $DIR/disallowed-positions.rs:415:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:31
+ --> $DIR/disallowed-positions.rs:415:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:31
+ --> $DIR/disallowed-positions.rs:415:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:420:9
+ --> $DIR/disallowed-positions.rs:419:9
|
LL | if (let Some(a) = opt && (true)) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:420:9
+ --> $DIR/disallowed-positions.rs:419:9
|
LL | if (let Some(a) = opt && (true)) && true {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:423:28
+ |
+LL | if (true && (true)) && let Some(a) = opt {
+ | ^^^^^^^^^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:426:18
+ |
+LL | if (true) && let Some(a) = opt {
+ | ^^^^^^^^^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:429:16
+ |
+LL | if true && let Some(a) = opt {
+ | ^^^^^^^^^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/disallowed-positions.rs:434:8
+ |
+LL | if let true = (true && fun()) && (true) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
+
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:440:22
+ --> $DIR/disallowed-positions.rs:439:22
|
LL | let x = (true && let y = 1);
| ^^^
@@ -965,7 +1019,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:445:20
+ --> $DIR/disallowed-positions.rs:444:20
|
LL | ([1, 2, 3][let _ = ()])
| ^^^
@@ -973,7 +1027,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
+ --> $DIR/disallowed-positions.rs:90:16
|
LL | use_expr!((let 0 = 1 && 0 == 0));
| ^^^
@@ -981,7 +1035,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
+ --> $DIR/disallowed-positions.rs:90:16
|
LL | use_expr!((let 0 = 1 && 0 == 0));
| ^^^
@@ -990,7 +1044,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
+ --> $DIR/disallowed-positions.rs:90:16
|
LL | use_expr!((let 0 = 1 && 0 == 0));
| ^^^
@@ -999,7 +1053,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
+ --> $DIR/disallowed-positions.rs:94:16
|
LL | use_expr!((let 0 = 1));
| ^^^
@@ -1007,7 +1061,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
+ --> $DIR/disallowed-positions.rs:94:16
|
LL | use_expr!((let 0 = 1));
| ^^^
@@ -1016,7 +1070,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
+ --> $DIR/disallowed-positions.rs:94:16
|
LL | use_expr!((let 0 = 1));
| ^^^
@@ -1025,7 +1079,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:134:8
+ --> $DIR/disallowed-positions.rs:133:8
|
LL | if true..(let 0 = 0) {}
| ^^^^^^^^^^^^^^^^^ expected `bool`, found `Range<bool>`
@@ -1034,7 +1088,7 @@
found struct `std::ops::Range<bool>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:143:12
+ --> $DIR/disallowed-positions.rs:142:12
|
LL | if let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1045,7 +1099,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:146:12
+ --> $DIR/disallowed-positions.rs:145:12
|
LL | if let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1056,7 +1110,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:152:12
+ --> $DIR/disallowed-positions.rs:151:12
|
LL | if let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `fn() -> bool`
@@ -1067,7 +1121,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:158:12
+ --> $DIR/disallowed-positions.rs:157:12
|
LL | if let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `&&bool`
@@ -1078,7 +1132,7 @@
found struct `std::ops::Range<_>`
error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:114:20
+ --> $DIR/disallowed-positions.rs:113:20
|
LL | if let 0 = 0? {}
| ^^ the `?` operator cannot be applied to type `{integer}`
@@ -1086,7 +1140,7 @@
= help: the trait `Try` is not implemented for `{integer}`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:225:11
+ --> $DIR/disallowed-positions.rs:224:11
|
LL | while true..(let 0 = 0) {}
| ^^^^^^^^^^^^^^^^^ expected `bool`, found `Range<bool>`
@@ -1095,7 +1149,7 @@
found struct `std::ops::Range<bool>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:234:15
+ --> $DIR/disallowed-positions.rs:233:15
|
LL | while let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1106,7 +1160,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:237:15
+ --> $DIR/disallowed-positions.rs:236:15
|
LL | while let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1117,7 +1171,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:243:15
+ --> $DIR/disallowed-positions.rs:242:15
|
LL | while let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `fn() -> bool`
@@ -1128,7 +1182,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:249:15
+ --> $DIR/disallowed-positions.rs:248:15
|
LL | while let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `&&bool`
@@ -1139,7 +1193,7 @@
found struct `std::ops::Range<_>`
error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:205:23
+ --> $DIR/disallowed-positions.rs:204:23
|
LL | while let 0 = 0? {}
| ^^ the `?` operator cannot be applied to type `{integer}`
@@ -1147,7 +1201,7 @@
= help: the trait `Try` is not implemented for `{integer}`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:334:10
+ --> $DIR/disallowed-positions.rs:333:10
|
LL | (let Range { start: _, end: _ } = true..true || false);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1158,14 +1212,14 @@
found struct `std::ops::Range<_>`
error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:309:17
+ --> $DIR/disallowed-positions.rs:308:17
|
LL | let 0 = 0?;
| ^^ the `?` operator cannot be applied to type `{integer}`
|
= help: the trait `Try` is not implemented for `{integer}`
-error: aborting due to 125 previous errors
+error: aborting due to 134 previous errors
Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.feature.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.e2024.stderr
similarity index 83%
rename from tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.feature.stderr
rename to tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.e2024.stderr
index 141a6d2..20af65c 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.feature.stderr
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.e2024.stderr
@@ -1,239 +1,239 @@
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:33:9
+ --> $DIR/disallowed-positions.rs:32:9
|
LL | if (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:33:9
+ --> $DIR/disallowed-positions.rs:32:9
|
LL | if (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:36:11
+ --> $DIR/disallowed-positions.rs:35:11
|
LL | if (((let 0 = 1))) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:36:11
+ --> $DIR/disallowed-positions.rs:35:11
|
LL | if (((let 0 = 1))) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:39:9
+ --> $DIR/disallowed-positions.rs:38:9
|
LL | if (let 0 = 1) && true {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:39:9
+ --> $DIR/disallowed-positions.rs:38:9
|
LL | if (let 0 = 1) && true {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:42:17
+ --> $DIR/disallowed-positions.rs:41:17
|
LL | if true && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:42:17
+ --> $DIR/disallowed-positions.rs:41:17
|
LL | if true && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:9
+ --> $DIR/disallowed-positions.rs:44:9
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:9
+ --> $DIR/disallowed-positions.rs:44:9
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:24
+ --> $DIR/disallowed-positions.rs:44:24
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:24
+ --> $DIR/disallowed-positions.rs:44:24
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:48
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:61
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:59:12
+ --> $DIR/disallowed-positions.rs:58:12
|
LL | while (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:59:12
+ --> $DIR/disallowed-positions.rs:58:12
|
LL | while (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:62:14
+ --> $DIR/disallowed-positions.rs:61:14
|
LL | while (((let 0 = 1))) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:62:14
+ --> $DIR/disallowed-positions.rs:61:14
|
LL | while (((let 0 = 1))) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:65:12
+ --> $DIR/disallowed-positions.rs:64:12
|
LL | while (let 0 = 1) && true {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:65:12
+ --> $DIR/disallowed-positions.rs:64:12
|
LL | while (let 0 = 1) && true {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:68:20
+ --> $DIR/disallowed-positions.rs:67:20
|
LL | while true && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:68:20
+ --> $DIR/disallowed-positions.rs:67:20
|
LL | while true && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:12
+ --> $DIR/disallowed-positions.rs:70:12
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:12
+ --> $DIR/disallowed-positions.rs:70:12
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:27
+ --> $DIR/disallowed-positions.rs:70:27
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:27
+ --> $DIR/disallowed-positions.rs:70:27
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:51
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:64
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:103:9
+ --> $DIR/disallowed-positions.rs:102:9
|
LL | if &let 0 = 0 {}
| ^^^^^^^^^
@@ -241,7 +241,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:106:9
+ --> $DIR/disallowed-positions.rs:105:9
|
LL | if !let 0 = 0 {}
| ^^^^^^^^^
@@ -249,7 +249,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:108:9
+ --> $DIR/disallowed-positions.rs:107:9
|
LL | if *let 0 = 0 {}
| ^^^^^^^^^
@@ -257,7 +257,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:110:9
+ --> $DIR/disallowed-positions.rs:109:9
|
LL | if -let 0 = 0 {}
| ^^^^^^^^^
@@ -265,7 +265,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:118:9
+ --> $DIR/disallowed-positions.rs:117:9
|
LL | if (let 0 = 0)? {}
| ^^^^^^^^^
@@ -273,13 +273,13 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:121:13
+ --> $DIR/disallowed-positions.rs:120:13
|
LL | if true || let 0 = 0 {}
| ^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:123:17
+ --> $DIR/disallowed-positions.rs:122:17
|
LL | if (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -287,7 +287,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:125:25
+ --> $DIR/disallowed-positions.rs:124:25
|
LL | if true && (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -295,7 +295,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:127:25
+ --> $DIR/disallowed-positions.rs:126:25
|
LL | if true || (true && let 0 = 0) {}
| ^^^^^^^^^
@@ -303,7 +303,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:131:12
+ --> $DIR/disallowed-positions.rs:130:12
|
LL | if x = let 0 = 0 {}
| ^^^
@@ -311,7 +311,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:134:15
+ --> $DIR/disallowed-positions.rs:133:15
|
LL | if true..(let 0 = 0) {}
| ^^^^^^^^^
@@ -319,7 +319,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:137:11
+ --> $DIR/disallowed-positions.rs:136:11
|
LL | if ..(let 0 = 0) {}
| ^^^^^^^^^
@@ -327,7 +327,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:139:9
+ --> $DIR/disallowed-positions.rs:138:9
|
LL | if (let 0 = 0).. {}
| ^^^^^^^^^
@@ -335,7 +335,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:143:8
+ --> $DIR/disallowed-positions.rs:142:8
|
LL | if let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -343,7 +343,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:146:8
+ --> $DIR/disallowed-positions.rs:145:8
|
LL | if let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -351,7 +351,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:152:8
+ --> $DIR/disallowed-positions.rs:151:8
|
LL | if let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -359,7 +359,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:158:8
+ --> $DIR/disallowed-positions.rs:157:8
|
LL | if let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -367,7 +367,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:162:19
+ --> $DIR/disallowed-positions.rs:161:19
|
LL | if let true = let true = true {}
| ^^^
@@ -375,7 +375,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:165:15
+ --> $DIR/disallowed-positions.rs:164:15
|
LL | if return let 0 = 0 {}
| ^^^
@@ -383,7 +383,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:168:21
+ --> $DIR/disallowed-positions.rs:167:21
|
LL | loop { if break let 0 = 0 {} }
| ^^^
@@ -391,7 +391,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:171:15
+ --> $DIR/disallowed-positions.rs:170:15
|
LL | if (match let 0 = 0 { _ => { false } }) {}
| ^^^
@@ -399,7 +399,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:174:9
+ --> $DIR/disallowed-positions.rs:173:9
|
LL | if (let 0 = 0, false).1 {}
| ^^^^^^^^^
@@ -407,7 +407,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:177:9
+ --> $DIR/disallowed-positions.rs:176:9
|
LL | if (let 0 = 0,) {}
| ^^^^^^^^^
@@ -415,7 +415,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:181:13
+ --> $DIR/disallowed-positions.rs:180:13
|
LL | if (let 0 = 0).await {}
| ^^^^^^^^^
@@ -423,7 +423,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:185:12
+ --> $DIR/disallowed-positions.rs:184:12
|
LL | if (|| let 0 = 0) {}
| ^^^
@@ -431,7 +431,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:188:9
+ --> $DIR/disallowed-positions.rs:187:9
|
LL | if (let 0 = 0)() {}
| ^^^^^^^^^
@@ -439,7 +439,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:194:12
+ --> $DIR/disallowed-positions.rs:193:12
|
LL | while &let 0 = 0 {}
| ^^^^^^^^^
@@ -447,7 +447,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:197:12
+ --> $DIR/disallowed-positions.rs:196:12
|
LL | while !let 0 = 0 {}
| ^^^^^^^^^
@@ -455,7 +455,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:199:12
+ --> $DIR/disallowed-positions.rs:198:12
|
LL | while *let 0 = 0 {}
| ^^^^^^^^^
@@ -463,7 +463,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:201:12
+ --> $DIR/disallowed-positions.rs:200:12
|
LL | while -let 0 = 0 {}
| ^^^^^^^^^
@@ -471,7 +471,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:209:12
+ --> $DIR/disallowed-positions.rs:208:12
|
LL | while (let 0 = 0)? {}
| ^^^^^^^^^
@@ -479,13 +479,13 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:212:16
+ --> $DIR/disallowed-positions.rs:211:16
|
LL | while true || let 0 = 0 {}
| ^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:214:20
+ --> $DIR/disallowed-positions.rs:213:20
|
LL | while (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -493,7 +493,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:216:28
+ --> $DIR/disallowed-positions.rs:215:28
|
LL | while true && (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -501,7 +501,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:218:28
+ --> $DIR/disallowed-positions.rs:217:28
|
LL | while true || (true && let 0 = 0) {}
| ^^^^^^^^^
@@ -509,7 +509,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:222:15
+ --> $DIR/disallowed-positions.rs:221:15
|
LL | while x = let 0 = 0 {}
| ^^^
@@ -517,7 +517,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:225:18
+ --> $DIR/disallowed-positions.rs:224:18
|
LL | while true..(let 0 = 0) {}
| ^^^^^^^^^
@@ -525,7 +525,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:228:14
+ --> $DIR/disallowed-positions.rs:227:14
|
LL | while ..(let 0 = 0) {}
| ^^^^^^^^^
@@ -533,7 +533,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:230:12
+ --> $DIR/disallowed-positions.rs:229:12
|
LL | while (let 0 = 0).. {}
| ^^^^^^^^^
@@ -541,7 +541,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:234:11
+ --> $DIR/disallowed-positions.rs:233:11
|
LL | while let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -549,7 +549,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:237:11
+ --> $DIR/disallowed-positions.rs:236:11
|
LL | while let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -557,7 +557,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:243:11
+ --> $DIR/disallowed-positions.rs:242:11
|
LL | while let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -565,7 +565,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:249:11
+ --> $DIR/disallowed-positions.rs:248:11
|
LL | while let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -573,7 +573,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:253:22
+ --> $DIR/disallowed-positions.rs:252:22
|
LL | while let true = let true = true {}
| ^^^
@@ -581,7 +581,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:256:18
+ --> $DIR/disallowed-positions.rs:255:18
|
LL | while return let 0 = 0 {}
| ^^^
@@ -589,7 +589,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:259:39
+ --> $DIR/disallowed-positions.rs:258:39
|
LL | 'outer: loop { while break 'outer let 0 = 0 {} }
| ^^^
@@ -597,7 +597,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:262:18
+ --> $DIR/disallowed-positions.rs:261:18
|
LL | while (match let 0 = 0 { _ => { false } }) {}
| ^^^
@@ -605,7 +605,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:265:12
+ --> $DIR/disallowed-positions.rs:264:12
|
LL | while (let 0 = 0, false).1 {}
| ^^^^^^^^^
@@ -613,7 +613,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:268:12
+ --> $DIR/disallowed-positions.rs:267:12
|
LL | while (let 0 = 0,) {}
| ^^^^^^^^^
@@ -621,7 +621,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:272:16
+ --> $DIR/disallowed-positions.rs:271:16
|
LL | while (let 0 = 0).await {}
| ^^^^^^^^^
@@ -629,7 +629,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:276:15
+ --> $DIR/disallowed-positions.rs:275:15
|
LL | while (|| let 0 = 0) {}
| ^^^
@@ -637,7 +637,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:279:12
+ --> $DIR/disallowed-positions.rs:278:12
|
LL | while (let 0 = 0)() {}
| ^^^^^^^^^
@@ -645,7 +645,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:296:6
+ --> $DIR/disallowed-positions.rs:295:6
|
LL | &let 0 = 0;
| ^^^
@@ -653,7 +653,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:299:6
+ --> $DIR/disallowed-positions.rs:298:6
|
LL | !let 0 = 0;
| ^^^
@@ -661,7 +661,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:301:6
+ --> $DIR/disallowed-positions.rs:300:6
|
LL | *let 0 = 0;
| ^^^
@@ -669,7 +669,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:303:6
+ --> $DIR/disallowed-positions.rs:302:6
|
LL | -let 0 = 0;
| ^^^
@@ -677,7 +677,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:305:13
+ --> $DIR/disallowed-positions.rs:304:13
|
LL | let _ = let _ = 3;
| ^^^
@@ -685,7 +685,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:313:6
+ --> $DIR/disallowed-positions.rs:312:6
|
LL | (let 0 = 0)?;
| ^^^
@@ -693,7 +693,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:316:13
+ --> $DIR/disallowed-positions.rs:315:13
|
LL | true || let 0 = 0;
| ^^^
@@ -701,7 +701,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:318:14
+ --> $DIR/disallowed-positions.rs:317:14
|
LL | (true || let 0 = 0);
| ^^^
@@ -709,7 +709,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:320:22
+ --> $DIR/disallowed-positions.rs:319:22
|
LL | true && (true || let 0 = 0);
| ^^^
@@ -717,7 +717,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:324:9
+ --> $DIR/disallowed-positions.rs:323:9
|
LL | x = let 0 = 0;
| ^^^
@@ -725,7 +725,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:327:12
+ --> $DIR/disallowed-positions.rs:326:12
|
LL | true..(let 0 = 0);
| ^^^
@@ -733,7 +733,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:329:8
+ --> $DIR/disallowed-positions.rs:328:8
|
LL | ..(let 0 = 0);
| ^^^
@@ -741,7 +741,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:331:6
+ --> $DIR/disallowed-positions.rs:330:6
|
LL | (let 0 = 0)..;
| ^^^
@@ -749,7 +749,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:334:6
+ --> $DIR/disallowed-positions.rs:333:6
|
LL | (let Range { start: _, end: _ } = true..true || false);
| ^^^
@@ -757,7 +757,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:6
+ --> $DIR/disallowed-positions.rs:337:6
|
LL | (let true = let true = true);
| ^^^
@@ -765,7 +765,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:17
+ --> $DIR/disallowed-positions.rs:337:17
|
LL | (let true = let true = true);
| ^^^
@@ -773,7 +773,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:344:25
+ --> $DIR/disallowed-positions.rs:343:25
|
LL | let x = true && let y = 1;
| ^^^
@@ -781,7 +781,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:350:19
+ --> $DIR/disallowed-positions.rs:349:19
|
LL | [1, 2, 3][let _ = ()]
| ^^^
@@ -789,7 +789,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:355:6
+ --> $DIR/disallowed-positions.rs:354:6
|
LL | &let 0 = 0
| ^^^
@@ -797,7 +797,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:366:17
+ --> $DIR/disallowed-positions.rs:365:17
|
LL | true && let 1 = 1
| ^^^
@@ -805,7 +805,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:371:17
+ --> $DIR/disallowed-positions.rs:370:17
|
LL | true && let 1 = 1
| ^^^
@@ -813,7 +813,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:376:17
+ --> $DIR/disallowed-positions.rs:375:17
|
LL | true && let 1 = 1
| ^^^
@@ -821,7 +821,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:387:17
+ --> $DIR/disallowed-positions.rs:386:17
|
LL | true && let 1 = 1
| ^^^
@@ -829,7 +829,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expressions must be enclosed in braces to be used as const generic arguments
- --> $DIR/disallowed-positions.rs:387:9
+ --> $DIR/disallowed-positions.rs:386:9
|
LL | true && let 1 = 1
| ^^^^^^^^^^^^^^^^^
@@ -840,124 +840,124 @@
| + +
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:397:9
+ --> $DIR/disallowed-positions.rs:396:9
|
LL | if (let Some(a) = opt && true) {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:397:9
+ --> $DIR/disallowed-positions.rs:396:9
|
LL | if (let Some(a) = opt && true) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:401:9
+ --> $DIR/disallowed-positions.rs:400:9
|
LL | if (let Some(a) = opt) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:401:9
+ --> $DIR/disallowed-positions.rs:400:9
|
LL | if (let Some(a) = opt) && true {
| ^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:9
+ --> $DIR/disallowed-positions.rs:403:9
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:9
+ --> $DIR/disallowed-positions.rs:403:9
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:32
+ --> $DIR/disallowed-positions.rs:403:32
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:32
+ --> $DIR/disallowed-positions.rs:403:32
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:9
+ --> $DIR/disallowed-positions.rs:411:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:9
+ --> $DIR/disallowed-positions.rs:411:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:31
+ --> $DIR/disallowed-positions.rs:411:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:31
+ --> $DIR/disallowed-positions.rs:411:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:9
+ --> $DIR/disallowed-positions.rs:415:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:9
+ --> $DIR/disallowed-positions.rs:415:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:31
+ --> $DIR/disallowed-positions.rs:415:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:31
+ --> $DIR/disallowed-positions.rs:415:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:420:9
+ --> $DIR/disallowed-positions.rs:419:9
|
LL | if (let Some(a) = opt && (true)) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:420:9
+ --> $DIR/disallowed-positions.rs:419:9
|
LL | if (let Some(a) = opt && (true)) && true {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:440:22
+ --> $DIR/disallowed-positions.rs:439:22
|
LL | let x = (true && let y = 1);
| ^^^
@@ -965,7 +965,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:445:20
+ --> $DIR/disallowed-positions.rs:444:20
|
LL | ([1, 2, 3][let _ = ()])
| ^^^
@@ -973,7 +973,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
+ --> $DIR/disallowed-positions.rs:90:16
|
LL | use_expr!((let 0 = 1 && 0 == 0));
| ^^^
@@ -981,7 +981,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
+ --> $DIR/disallowed-positions.rs:90:16
|
LL | use_expr!((let 0 = 1 && 0 == 0));
| ^^^
@@ -990,7 +990,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
+ --> $DIR/disallowed-positions.rs:90:16
|
LL | use_expr!((let 0 = 1 && 0 == 0));
| ^^^
@@ -999,7 +999,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
+ --> $DIR/disallowed-positions.rs:94:16
|
LL | use_expr!((let 0 = 1));
| ^^^
@@ -1007,7 +1007,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
+ --> $DIR/disallowed-positions.rs:94:16
|
LL | use_expr!((let 0 = 1));
| ^^^
@@ -1016,7 +1016,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
+ --> $DIR/disallowed-positions.rs:94:16
|
LL | use_expr!((let 0 = 1));
| ^^^
@@ -1025,7 +1025,7 @@
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:134:8
+ --> $DIR/disallowed-positions.rs:133:8
|
LL | if true..(let 0 = 0) {}
| ^^^^^^^^^^^^^^^^^ expected `bool`, found `Range<bool>`
@@ -1034,7 +1034,7 @@
found struct `std::ops::Range<bool>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:143:12
+ --> $DIR/disallowed-positions.rs:142:12
|
LL | if let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1045,7 +1045,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:146:12
+ --> $DIR/disallowed-positions.rs:145:12
|
LL | if let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1056,7 +1056,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:152:12
+ --> $DIR/disallowed-positions.rs:151:12
|
LL | if let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `fn() -> bool`
@@ -1067,7 +1067,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:158:12
+ --> $DIR/disallowed-positions.rs:157:12
|
LL | if let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `&&bool`
@@ -1078,7 +1078,7 @@
found struct `std::ops::Range<_>`
error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:114:20
+ --> $DIR/disallowed-positions.rs:113:20
|
LL | if let 0 = 0? {}
| ^^ the `?` operator cannot be applied to type `{integer}`
@@ -1086,7 +1086,7 @@
= help: the trait `Try` is not implemented for `{integer}`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:225:11
+ --> $DIR/disallowed-positions.rs:224:11
|
LL | while true..(let 0 = 0) {}
| ^^^^^^^^^^^^^^^^^ expected `bool`, found `Range<bool>`
@@ -1095,7 +1095,7 @@
found struct `std::ops::Range<bool>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:234:15
+ --> $DIR/disallowed-positions.rs:233:15
|
LL | while let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1106,7 +1106,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:237:15
+ --> $DIR/disallowed-positions.rs:236:15
|
LL | while let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1117,7 +1117,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:243:15
+ --> $DIR/disallowed-positions.rs:242:15
|
LL | while let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `fn() -> bool`
@@ -1128,7 +1128,7 @@
found struct `std::ops::Range<_>`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:249:15
+ --> $DIR/disallowed-positions.rs:248:15
|
LL | while let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `&&bool`
@@ -1139,7 +1139,7 @@
found struct `std::ops::Range<_>`
error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:205:23
+ --> $DIR/disallowed-positions.rs:204:23
|
LL | while let 0 = 0? {}
| ^^ the `?` operator cannot be applied to type `{integer}`
@@ -1147,7 +1147,7 @@
= help: the trait `Try` is not implemented for `{integer}`
error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:334:10
+ --> $DIR/disallowed-positions.rs:333:10
|
LL | (let Range { start: _, end: _ } = true..true || false);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
@@ -1158,7 +1158,7 @@
found struct `std::ops::Range<_>`
error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:309:17
+ --> $DIR/disallowed-positions.rs:308:17
|
LL | let 0 = 0?;
| ^^ the `?` operator cannot be applied to type `{integer}`
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.no_feature.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.no_feature.stderr
deleted file mode 100644
index dda09de..0000000
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.no_feature.stderr
+++ /dev/null
@@ -1,1261 +0,0 @@
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:33:9
- |
-LL | if (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:33:9
- |
-LL | if (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:36:11
- |
-LL | if (((let 0 = 1))) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:36:11
- |
-LL | if (((let 0 = 1))) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:39:9
- |
-LL | if (let 0 = 1) && true {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:39:9
- |
-LL | if (let 0 = 1) && true {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:42:17
- |
-LL | if true && (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:42:17
- |
-LL | if true && (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:9
- |
-LL | if (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:9
- |
-LL | if (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:24
- |
-LL | if (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:24
- |
-LL | if (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
- |
-LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
- |
-LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
- |
-LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:59:12
- |
-LL | while (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:59:12
- |
-LL | while (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:62:14
- |
-LL | while (((let 0 = 1))) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:62:14
- |
-LL | while (((let 0 = 1))) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:65:12
- |
-LL | while (let 0 = 1) && true {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:65:12
- |
-LL | while (let 0 = 1) && true {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:68:20
- |
-LL | while true && (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:68:20
- |
-LL | while true && (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:12
- |
-LL | while (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:12
- |
-LL | while (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:27
- |
-LL | while (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:27
- |
-LL | while (let 0 = 1) && (let 0 = 1) {}
- | ^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
- |
-LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
- |
-LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
- |
-LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:103:9
- |
-LL | if &let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:106:9
- |
-LL | if !let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:108:9
- |
-LL | if *let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:110:9
- |
-LL | if -let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:118:9
- |
-LL | if (let 0 = 0)? {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:121:13
- |
-LL | if true || let 0 = 0 {}
- | ^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:123:17
- |
-LL | if (true || let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:125:25
- |
-LL | if true && (true || let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:127:25
- |
-LL | if true || (true && let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:131:12
- |
-LL | if x = let 0 = 0 {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:134:15
- |
-LL | if true..(let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:137:11
- |
-LL | if ..(let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:139:9
- |
-LL | if (let 0 = 0).. {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:143:8
- |
-LL | if let Range { start: _, end: _ } = true..true && false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:146:8
- |
-LL | if let Range { start: _, end: _ } = true..true || false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:152:8
- |
-LL | if let Range { start: F, end } = F..|| true {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:158:8
- |
-LL | if let Range { start: true, end } = t..&&false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:162:19
- |
-LL | if let true = let true = true {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:165:15
- |
-LL | if return let 0 = 0 {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:168:21
- |
-LL | loop { if break let 0 = 0 {} }
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:171:15
- |
-LL | if (match let 0 = 0 { _ => { false } }) {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:174:9
- |
-LL | if (let 0 = 0, false).1 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:177:9
- |
-LL | if (let 0 = 0,) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:181:13
- |
-LL | if (let 0 = 0).await {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:185:12
- |
-LL | if (|| let 0 = 0) {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:188:9
- |
-LL | if (let 0 = 0)() {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:194:12
- |
-LL | while &let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:197:12
- |
-LL | while !let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:199:12
- |
-LL | while *let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:201:12
- |
-LL | while -let 0 = 0 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:209:12
- |
-LL | while (let 0 = 0)? {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:212:16
- |
-LL | while true || let 0 = 0 {}
- | ^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:214:20
- |
-LL | while (true || let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:216:28
- |
-LL | while true && (true || let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:218:28
- |
-LL | while true || (true && let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:222:15
- |
-LL | while x = let 0 = 0 {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:225:18
- |
-LL | while true..(let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:228:14
- |
-LL | while ..(let 0 = 0) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:230:12
- |
-LL | while (let 0 = 0).. {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:234:11
- |
-LL | while let Range { start: _, end: _ } = true..true && false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:237:11
- |
-LL | while let Range { start: _, end: _ } = true..true || false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:243:11
- |
-LL | while let Range { start: F, end } = F..|| true {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:249:11
- |
-LL | while let Range { start: true, end } = t..&&false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:253:22
- |
-LL | while let true = let true = true {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:256:18
- |
-LL | while return let 0 = 0 {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:259:39
- |
-LL | 'outer: loop { while break 'outer let 0 = 0 {} }
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:262:18
- |
-LL | while (match let 0 = 0 { _ => { false } }) {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:265:12
- |
-LL | while (let 0 = 0, false).1 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:268:12
- |
-LL | while (let 0 = 0,) {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:272:16
- |
-LL | while (let 0 = 0).await {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:276:15
- |
-LL | while (|| let 0 = 0) {}
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:279:12
- |
-LL | while (let 0 = 0)() {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:296:6
- |
-LL | &let 0 = 0;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:299:6
- |
-LL | !let 0 = 0;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:301:6
- |
-LL | *let 0 = 0;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:303:6
- |
-LL | -let 0 = 0;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:305:13
- |
-LL | let _ = let _ = 3;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:313:6
- |
-LL | (let 0 = 0)?;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:316:13
- |
-LL | true || let 0 = 0;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:318:14
- |
-LL | (true || let 0 = 0);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:320:22
- |
-LL | true && (true || let 0 = 0);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:324:9
- |
-LL | x = let 0 = 0;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:327:12
- |
-LL | true..(let 0 = 0);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:329:8
- |
-LL | ..(let 0 = 0);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:331:6
- |
-LL | (let 0 = 0)..;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:334:6
- |
-LL | (let Range { start: _, end: _ } = true..true || false);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:6
- |
-LL | (let true = let true = true);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:17
- |
-LL | (let true = let true = true);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:344:25
- |
-LL | let x = true && let y = 1;
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:350:19
- |
-LL | [1, 2, 3][let _ = ()]
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:355:6
- |
-LL | &let 0 = 0
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:366:17
- |
-LL | true && let 1 = 1
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:371:17
- |
-LL | true && let 1 = 1
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:376:17
- |
-LL | true && let 1 = 1
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:387:17
- |
-LL | true && let 1 = 1
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expressions must be enclosed in braces to be used as const generic arguments
- --> $DIR/disallowed-positions.rs:387:9
- |
-LL | true && let 1 = 1
- | ^^^^^^^^^^^^^^^^^
- |
-help: enclose the `const` expression in braces
- |
-LL | { true && let 1 = 1 }
- | + +
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:397:9
- |
-LL | if (let Some(a) = opt && true) {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:397:9
- |
-LL | if (let Some(a) = opt && true) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:401:9
- |
-LL | if (let Some(a) = opt) && true {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:401:9
- |
-LL | if (let Some(a) = opt) && true {
- | ^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:9
- |
-LL | if (let Some(a) = opt) && (let Some(b) = a) {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:9
- |
-LL | if (let Some(a) = opt) && (let Some(b) = a) {
- | ^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:32
- |
-LL | if (let Some(a) = opt) && (let Some(b) = a) {
- | ^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:32
- |
-LL | if (let Some(a) = opt) && (let Some(b) = a) {
- | ^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:9
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:9
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:31
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
- | ^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:31
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
- | ^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:9
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:9
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:31
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
- | ^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:31
- |
-LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
- | ^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:420:9
- |
-LL | if (let Some(a) = opt && (true)) && true {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:420:9
- |
-LL | if (let Some(a) = opt && (true)) && true {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:440:22
- |
-LL | let x = (true && let y = 1);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:445:20
- |
-LL | ([1, 2, 3][let _ = ()])
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
- |
-LL | use_expr!((let 0 = 1 && 0 == 0));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
- |
-LL | use_expr!((let 0 = 1 && 0 == 0));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
- = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:91:16
- |
-LL | use_expr!((let 0 = 1 && 0 == 0));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
- = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
- |
-LL | use_expr!((let 0 = 1));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
- |
-LL | use_expr!((let 0 = 1));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
- = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:95:16
- |
-LL | use_expr!((let 0 = 1));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
- = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:49:8
- |
-LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:49:21
- |
-LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:75:11
- |
-LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:75:24
- |
-LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:408:8
- |
-LL | if let Some(a) = opt && (true && true) {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:424:28
- |
-LL | if (true && (true)) && let Some(a) = opt {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:427:18
- |
-LL | if (true) && let Some(a) = opt {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:430:16
- |
-LL | if true && let Some(a) = opt {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/disallowed-positions.rs:435:8
- |
-LL | if let true = (true && fun()) && (true) {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:134:8
- |
-LL | if true..(let 0 = 0) {}
- | ^^^^^^^^^^^^^^^^^ expected `bool`, found `Range<bool>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<bool>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:143:12
- |
-LL | if let Range { start: _, end: _ } = true..true && false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:146:12
- |
-LL | if let Range { start: _, end: _ } = true..true || false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:152:12
- |
-LL | if let Range { start: F, end } = F..|| true {}
- | ^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `fn() -> bool`
- | |
- | expected fn pointer, found `Range<_>`
- |
- = note: expected fn pointer `fn() -> bool`
- found struct `std::ops::Range<_>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:158:12
- |
-LL | if let Range { start: true, end } = t..&&false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `&&bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:114:20
- |
-LL | if let 0 = 0? {}
- | ^^ the `?` operator cannot be applied to type `{integer}`
- |
- = help: the trait `Try` is not implemented for `{integer}`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:225:11
- |
-LL | while true..(let 0 = 0) {}
- | ^^^^^^^^^^^^^^^^^ expected `bool`, found `Range<bool>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<bool>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:234:15
- |
-LL | while let Range { start: _, end: _ } = true..true && false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:237:15
- |
-LL | while let Range { start: _, end: _ } = true..true || false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:243:15
- |
-LL | while let Range { start: F, end } = F..|| true {}
- | ^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `fn() -> bool`
- | |
- | expected fn pointer, found `Range<_>`
- |
- = note: expected fn pointer `fn() -> bool`
- found struct `std::ops::Range<_>`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:249:15
- |
-LL | while let Range { start: true, end } = t..&&false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this expression has type `&&bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:205:23
- |
-LL | while let 0 = 0? {}
- | ^^ the `?` operator cannot be applied to type `{integer}`
- |
- = help: the trait `Try` is not implemented for `{integer}`
-
-error[E0308]: mismatched types
- --> $DIR/disallowed-positions.rs:334:10
- |
-LL | (let Range { start: _, end: _ } = true..true || false);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this expression has type `bool`
- | |
- | expected `bool`, found `Range<_>`
- |
- = note: expected type `bool`
- found struct `std::ops::Range<_>`
-
-error[E0277]: the `?` operator can only be applied to values that implement `Try`
- --> $DIR/disallowed-positions.rs:309:17
- |
-LL | let 0 = 0?;
- | ^^ the `?` operator cannot be applied to type `{integer}`
- |
- = help: the trait `Try` is not implemented for `{integer}`
-
-error: aborting due to 134 previous errors
-
-Some errors have detailed explanations: E0277, E0308, E0658.
-For more information about an error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.nothing.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.nothing.stderr
index 5b53691..f69c18f 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.nothing.stderr
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.nothing.stderr
@@ -1,239 +1,239 @@
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:33:9
+ --> $DIR/disallowed-positions.rs:32:9
|
LL | if (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:33:9
+ --> $DIR/disallowed-positions.rs:32:9
|
LL | if (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:36:11
+ --> $DIR/disallowed-positions.rs:35:11
|
LL | if (((let 0 = 1))) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:36:11
+ --> $DIR/disallowed-positions.rs:35:11
|
LL | if (((let 0 = 1))) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:39:9
+ --> $DIR/disallowed-positions.rs:38:9
|
LL | if (let 0 = 1) && true {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:39:9
+ --> $DIR/disallowed-positions.rs:38:9
|
LL | if (let 0 = 1) && true {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:42:17
+ --> $DIR/disallowed-positions.rs:41:17
|
LL | if true && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:42:17
+ --> $DIR/disallowed-positions.rs:41:17
|
LL | if true && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:9
+ --> $DIR/disallowed-positions.rs:44:9
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:9
+ --> $DIR/disallowed-positions.rs:44:9
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:45:24
+ --> $DIR/disallowed-positions.rs:44:24
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:45:24
+ --> $DIR/disallowed-positions.rs:44:24
|
LL | if (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:48
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:49:61
+ --> $DIR/disallowed-positions.rs:48: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:49:35
+ --> $DIR/disallowed-positions.rs:48:35
|
LL | if let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:59:12
+ --> $DIR/disallowed-positions.rs:58:12
|
LL | while (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:59:12
+ --> $DIR/disallowed-positions.rs:58:12
|
LL | while (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:62:14
+ --> $DIR/disallowed-positions.rs:61:14
|
LL | while (((let 0 = 1))) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:62:14
+ --> $DIR/disallowed-positions.rs:61:14
|
LL | while (((let 0 = 1))) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:65:12
+ --> $DIR/disallowed-positions.rs:64:12
|
LL | while (let 0 = 1) && true {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:65:12
+ --> $DIR/disallowed-positions.rs:64:12
|
LL | while (let 0 = 1) && true {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:68:20
+ --> $DIR/disallowed-positions.rs:67:20
|
LL | while true && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:68:20
+ --> $DIR/disallowed-positions.rs:67:20
|
LL | while true && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:12
+ --> $DIR/disallowed-positions.rs:70:12
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:12
+ --> $DIR/disallowed-positions.rs:70:12
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:71:27
+ --> $DIR/disallowed-positions.rs:70:27
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:71:27
+ --> $DIR/disallowed-positions.rs:70:27
|
LL | while (let 0 = 1) && (let 0 = 1) {}
| ^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:51
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:75:64
+ --> $DIR/disallowed-positions.rs:74: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: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:75:38
+ --> $DIR/disallowed-positions.rs:74:38
|
LL | while let 0 = 1 && let 1 = 2 && (let 2 = 3 && let 3 = 4 && let 4 = 5) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:103:9
+ --> $DIR/disallowed-positions.rs:102:9
|
LL | if &let 0 = 0 {}
| ^^^^^^^^^
@@ -241,7 +241,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:106:9
+ --> $DIR/disallowed-positions.rs:105:9
|
LL | if !let 0 = 0 {}
| ^^^^^^^^^
@@ -249,7 +249,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:108:9
+ --> $DIR/disallowed-positions.rs:107:9
|
LL | if *let 0 = 0 {}
| ^^^^^^^^^
@@ -257,7 +257,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:110:9
+ --> $DIR/disallowed-positions.rs:109:9
|
LL | if -let 0 = 0 {}
| ^^^^^^^^^
@@ -265,7 +265,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:118:9
+ --> $DIR/disallowed-positions.rs:117:9
|
LL | if (let 0 = 0)? {}
| ^^^^^^^^^
@@ -273,13 +273,13 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:121:13
+ --> $DIR/disallowed-positions.rs:120:13
|
LL | if true || let 0 = 0 {}
| ^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:123:17
+ --> $DIR/disallowed-positions.rs:122:17
|
LL | if (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -287,7 +287,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:125:25
+ --> $DIR/disallowed-positions.rs:124:25
|
LL | if true && (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -295,7 +295,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:127:25
+ --> $DIR/disallowed-positions.rs:126:25
|
LL | if true || (true && let 0 = 0) {}
| ^^^^^^^^^
@@ -303,7 +303,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:131:12
+ --> $DIR/disallowed-positions.rs:130:12
|
LL | if x = let 0 = 0 {}
| ^^^
@@ -311,7 +311,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:134:15
+ --> $DIR/disallowed-positions.rs:133:15
|
LL | if true..(let 0 = 0) {}
| ^^^^^^^^^
@@ -319,7 +319,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:137:11
+ --> $DIR/disallowed-positions.rs:136:11
|
LL | if ..(let 0 = 0) {}
| ^^^^^^^^^
@@ -327,7 +327,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:139:9
+ --> $DIR/disallowed-positions.rs:138:9
|
LL | if (let 0 = 0).. {}
| ^^^^^^^^^
@@ -335,7 +335,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:143:8
+ --> $DIR/disallowed-positions.rs:142:8
|
LL | if let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -343,7 +343,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:146:8
+ --> $DIR/disallowed-positions.rs:145:8
|
LL | if let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -351,7 +351,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:152:8
+ --> $DIR/disallowed-positions.rs:151:8
|
LL | if let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -359,7 +359,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:158:8
+ --> $DIR/disallowed-positions.rs:157:8
|
LL | if let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -367,7 +367,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:162:19
+ --> $DIR/disallowed-positions.rs:161:19
|
LL | if let true = let true = true {}
| ^^^
@@ -375,7 +375,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:165:15
+ --> $DIR/disallowed-positions.rs:164:15
|
LL | if return let 0 = 0 {}
| ^^^
@@ -383,7 +383,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:168:21
+ --> $DIR/disallowed-positions.rs:167:21
|
LL | loop { if break let 0 = 0 {} }
| ^^^
@@ -391,7 +391,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:171:15
+ --> $DIR/disallowed-positions.rs:170:15
|
LL | if (match let 0 = 0 { _ => { false } }) {}
| ^^^
@@ -399,7 +399,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:174:9
+ --> $DIR/disallowed-positions.rs:173:9
|
LL | if (let 0 = 0, false).1 {}
| ^^^^^^^^^
@@ -407,7 +407,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:177:9
+ --> $DIR/disallowed-positions.rs:176:9
|
LL | if (let 0 = 0,) {}
| ^^^^^^^^^
@@ -415,7 +415,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:181:13
+ --> $DIR/disallowed-positions.rs:180:13
|
LL | if (let 0 = 0).await {}
| ^^^^^^^^^
@@ -423,7 +423,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:185:12
+ --> $DIR/disallowed-positions.rs:184:12
|
LL | if (|| let 0 = 0) {}
| ^^^
@@ -431,7 +431,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:188:9
+ --> $DIR/disallowed-positions.rs:187:9
|
LL | if (let 0 = 0)() {}
| ^^^^^^^^^
@@ -439,7 +439,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:194:12
+ --> $DIR/disallowed-positions.rs:193:12
|
LL | while &let 0 = 0 {}
| ^^^^^^^^^
@@ -447,7 +447,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:197:12
+ --> $DIR/disallowed-positions.rs:196:12
|
LL | while !let 0 = 0 {}
| ^^^^^^^^^
@@ -455,7 +455,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:199:12
+ --> $DIR/disallowed-positions.rs:198:12
|
LL | while *let 0 = 0 {}
| ^^^^^^^^^
@@ -463,7 +463,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:201:12
+ --> $DIR/disallowed-positions.rs:200:12
|
LL | while -let 0 = 0 {}
| ^^^^^^^^^
@@ -471,7 +471,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:209:12
+ --> $DIR/disallowed-positions.rs:208:12
|
LL | while (let 0 = 0)? {}
| ^^^^^^^^^
@@ -479,13 +479,13 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: `||` operators are not supported in let chain conditions
- --> $DIR/disallowed-positions.rs:212:16
+ --> $DIR/disallowed-positions.rs:211:16
|
LL | while true || let 0 = 0 {}
| ^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:214:20
+ --> $DIR/disallowed-positions.rs:213:20
|
LL | while (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -493,7 +493,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:216:28
+ --> $DIR/disallowed-positions.rs:215:28
|
LL | while true && (true || let 0 = 0) {}
| ^^^^^^^^^
@@ -501,7 +501,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:218:28
+ --> $DIR/disallowed-positions.rs:217:28
|
LL | while true || (true && let 0 = 0) {}
| ^^^^^^^^^
@@ -509,7 +509,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:222:15
+ --> $DIR/disallowed-positions.rs:221:15
|
LL | while x = let 0 = 0 {}
| ^^^
@@ -517,7 +517,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:225:18
+ --> $DIR/disallowed-positions.rs:224:18
|
LL | while true..(let 0 = 0) {}
| ^^^^^^^^^
@@ -525,7 +525,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:228:14
+ --> $DIR/disallowed-positions.rs:227:14
|
LL | while ..(let 0 = 0) {}
| ^^^^^^^^^
@@ -533,7 +533,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:230:12
+ --> $DIR/disallowed-positions.rs:229:12
|
LL | while (let 0 = 0).. {}
| ^^^^^^^^^
@@ -541,7 +541,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:234:11
+ --> $DIR/disallowed-positions.rs:233:11
|
LL | while let Range { start: _, end: _ } = true..true && false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -549,7 +549,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:237:11
+ --> $DIR/disallowed-positions.rs:236:11
|
LL | while let Range { start: _, end: _ } = true..true || false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -557,7 +557,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:243:11
+ --> $DIR/disallowed-positions.rs:242:11
|
LL | while let Range { start: F, end } = F..|| true {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -565,7 +565,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:249:11
+ --> $DIR/disallowed-positions.rs:248:11
|
LL | while let Range { start: true, end } = t..&&false {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -573,7 +573,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:253:22
+ --> $DIR/disallowed-positions.rs:252:22
|
LL | while let true = let true = true {}
| ^^^
@@ -581,7 +581,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:256:18
+ --> $DIR/disallowed-positions.rs:255:18
|
LL | while return let 0 = 0 {}
| ^^^
@@ -589,7 +589,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:259:39
+ --> $DIR/disallowed-positions.rs:258:39
|
LL | 'outer: loop { while break 'outer let 0 = 0 {} }
| ^^^
@@ -597,7 +597,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:262:18
+ --> $DIR/disallowed-positions.rs:261:18
|
LL | while (match let 0 = 0 { _ => { false } }) {}
| ^^^
@@ -605,7 +605,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:265:12
+ --> $DIR/disallowed-positions.rs:264:12
|
LL | while (let 0 = 0, false).1 {}
| ^^^^^^^^^
@@ -613,7 +613,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:268:12
+ --> $DIR/disallowed-positions.rs:267:12
|
LL | while (let 0 = 0,) {}
| ^^^^^^^^^
@@ -621,7 +621,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:272:16
+ --> $DIR/disallowed-positions.rs:271:16
|
LL | while (let 0 = 0).await {}
| ^^^^^^^^^
@@ -629,7 +629,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:276:15
+ --> $DIR/disallowed-positions.rs:275:15
|
LL | while (|| let 0 = 0) {}
| ^^^
@@ -637,7 +637,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:279:12
+ --> $DIR/disallowed-positions.rs:278:12
|
LL | while (let 0 = 0)() {}
| ^^^^^^^^^
@@ -645,7 +645,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:296:6
+ --> $DIR/disallowed-positions.rs:295:6
|
LL | &let 0 = 0;
| ^^^
@@ -653,7 +653,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:299:6
+ --> $DIR/disallowed-positions.rs:298:6
|
LL | !let 0 = 0;
| ^^^
@@ -661,7 +661,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:301:6
+ --> $DIR/disallowed-positions.rs:300:6
|
LL | *let 0 = 0;
| ^^^
@@ -669,7 +669,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:303:6
+ --> $DIR/disallowed-positions.rs:302:6
|
LL | -let 0 = 0;
| ^^^
@@ -677,7 +677,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:305:13
+ --> $DIR/disallowed-positions.rs:304:13
|
LL | let _ = let _ = 3;
| ^^^
@@ -685,7 +685,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:313:6
+ --> $DIR/disallowed-positions.rs:312:6
|
LL | (let 0 = 0)?;
| ^^^
@@ -693,7 +693,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:316:13
+ --> $DIR/disallowed-positions.rs:315:13
|
LL | true || let 0 = 0;
| ^^^
@@ -701,7 +701,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:318:14
+ --> $DIR/disallowed-positions.rs:317:14
|
LL | (true || let 0 = 0);
| ^^^
@@ -709,7 +709,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:320:22
+ --> $DIR/disallowed-positions.rs:319:22
|
LL | true && (true || let 0 = 0);
| ^^^
@@ -717,7 +717,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:324:9
+ --> $DIR/disallowed-positions.rs:323:9
|
LL | x = let 0 = 0;
| ^^^
@@ -725,7 +725,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:327:12
+ --> $DIR/disallowed-positions.rs:326:12
|
LL | true..(let 0 = 0);
| ^^^
@@ -733,7 +733,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:329:8
+ --> $DIR/disallowed-positions.rs:328:8
|
LL | ..(let 0 = 0);
| ^^^
@@ -741,7 +741,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:331:6
+ --> $DIR/disallowed-positions.rs:330:6
|
LL | (let 0 = 0)..;
| ^^^
@@ -749,7 +749,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:334:6
+ --> $DIR/disallowed-positions.rs:333:6
|
LL | (let Range { start: _, end: _ } = true..true || false);
| ^^^
@@ -757,7 +757,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:6
+ --> $DIR/disallowed-positions.rs:337:6
|
LL | (let true = let true = true);
| ^^^
@@ -765,7 +765,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:338:17
+ --> $DIR/disallowed-positions.rs:337:17
|
LL | (let true = let true = true);
| ^^^
@@ -773,7 +773,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:344:25
+ --> $DIR/disallowed-positions.rs:343:25
|
LL | let x = true && let y = 1;
| ^^^
@@ -781,7 +781,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:350:19
+ --> $DIR/disallowed-positions.rs:349:19
|
LL | [1, 2, 3][let _ = ()]
| ^^^
@@ -789,7 +789,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:355:6
+ --> $DIR/disallowed-positions.rs:354:6
|
LL | &let 0 = 0
| ^^^
@@ -797,7 +797,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:366:17
+ --> $DIR/disallowed-positions.rs:365:17
|
LL | true && let 1 = 1
| ^^^
@@ -805,7 +805,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:371:17
+ --> $DIR/disallowed-positions.rs:370:17
|
LL | true && let 1 = 1
| ^^^
@@ -813,7 +813,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:376:17
+ --> $DIR/disallowed-positions.rs:375:17
|
LL | true && let 1 = 1
| ^^^
@@ -821,7 +821,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:387:17
+ --> $DIR/disallowed-positions.rs:386:17
|
LL | true && let 1 = 1
| ^^^
@@ -829,7 +829,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expressions must be enclosed in braces to be used as const generic arguments
- --> $DIR/disallowed-positions.rs:387:9
+ --> $DIR/disallowed-positions.rs:386:9
|
LL | true && let 1 = 1
| ^^^^^^^^^^^^^^^^^
@@ -840,124 +840,124 @@
| + +
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:397:9
+ --> $DIR/disallowed-positions.rs:396:9
|
LL | if (let Some(a) = opt && true) {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:397:9
+ --> $DIR/disallowed-positions.rs:396:9
|
LL | if (let Some(a) = opt && true) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:401:9
+ --> $DIR/disallowed-positions.rs:400:9
|
LL | if (let Some(a) = opt) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:401:9
+ --> $DIR/disallowed-positions.rs:400:9
|
LL | if (let Some(a) = opt) && true {
| ^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:9
+ --> $DIR/disallowed-positions.rs:403:9
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:9
+ --> $DIR/disallowed-positions.rs:403:9
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:404:32
+ --> $DIR/disallowed-positions.rs:403:32
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:404:32
+ --> $DIR/disallowed-positions.rs:403:32
|
LL | if (let Some(a) = opt) && (let Some(b) = a) {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:9
+ --> $DIR/disallowed-positions.rs:411:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:9
+ --> $DIR/disallowed-positions.rs:411:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:412:31
+ --> $DIR/disallowed-positions.rs:411:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:412:31
+ --> $DIR/disallowed-positions.rs:411:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:9
+ --> $DIR/disallowed-positions.rs:415:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:9
+ --> $DIR/disallowed-positions.rs:415:9
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:416:31
+ --> $DIR/disallowed-positions.rs:415:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:416:31
+ --> $DIR/disallowed-positions.rs:415:31
|
LL | if (let Some(a) = opt && (let Some(b) = a)) && true {
| ^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:420:9
+ --> $DIR/disallowed-positions.rs:419:9
|
LL | if (let Some(a) = opt && (true)) && true {
| ^^^^^^^^^^^^^^^^^
|
= note: only supported directly in conditions of `if` and `while` expressions
note: `let`s wrapped in parentheses are not supported in a context with let chains
- --> $DIR/disallowed-positions.rs:420:9
+ --> $DIR/disallowed-positions.rs:419:9
|
LL | if (let Some(a) = opt && (true)) && true {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:440:22
+ --> $DIR/disallowed-positions.rs:439:22
|
LL | let x = (true && let y = 1);
| ^^^
@@ -965,7 +965,7 @@
= note: only supported directly in conditions of `if` and `while` expressions
error: expected expression, found `let` statement
- --> $DIR/disallowed-positions.rs:445:20
+ --> $DIR/disallowed-positions.rs:444:20
|
LL | ([1, 2, 3][let _ = ()])
| ^^^
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.rs b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.rs
index 65beccf..142ea6b 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.rs
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/disallowed-positions.rs
@@ -1,5 +1,7 @@
-//@ revisions: no_feature feature nothing
-//@ edition: 2021
+//@ revisions: e2021 e2024 nothing
+//@ [e2021] edition: 2021
+//@ [e2024] edition: 2024
+//@ [nothing] edition: 2024
// 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:
@@ -19,9 +21,6 @@
//
// To that end, we check some positions which is not part of the language above.
-// Avoid inflating `.stderr` with overzealous gates (or test what happens if you disable the gate)
-#![cfg_attr(not(no_feature), feature(let_chains))]
-
#![allow(irrefutable_let_patterns)]
use std::ops::Range;
@@ -50,8 +49,8 @@ fn _if() {
//~^ ERROR expected expression, found `let` statement
//~| ERROR expected expression, found `let` statement
//~| ERROR expected expression, found `let` statement
- //[no_feature]~| ERROR `let` expressions in this position are unstable
- //[no_feature]~| ERROR `let` expressions in this position are unstable
+ //[e2021]~| ERROR let chains are only allowed in Rust 2024 or later
+ //[e2021]~| ERROR let chains are only allowed in Rust 2024 or later
}
#[cfg(not(nothing))]
@@ -76,8 +75,8 @@ fn _while() {
//~^ ERROR expected expression, found `let` statement
//~| ERROR expected expression, found `let` statement
//~| ERROR expected expression, found `let` statement
- //[no_feature]~| ERROR `let` expressions in this position are unstable
- //[no_feature]~| ERROR `let` expressions in this position are unstable
+ //[e2021]~| ERROR let chains are only allowed in Rust 2024 or later
+ //[e2021]~| ERROR let chains are only allowed in Rust 2024 or later
}
#[cfg(not(nothing))]
@@ -89,13 +88,13 @@ macro_rules! use_expr {
}
}
use_expr!((let 0 = 1 && 0 == 0));
- //[feature,no_feature]~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR expected expression, found `let` statement
+ //[e2021,e2024]~^ ERROR expected expression, found `let` statement
+ //[e2021,e2024]~| ERROR expected expression, found `let` statement
+ //[e2021,e2024]~| ERROR expected expression, found `let` statement
use_expr!((let 0 = 1));
- //[feature,no_feature]~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR expected expression, found `let` statement
+ //[e2021,e2024]~^ ERROR expected expression, found `let` statement
+ //[e2021,e2024]~| ERROR expected expression, found `let` statement
+ //[e2021,e2024]~| ERROR expected expression, found `let` statement
}
#[cfg(not(nothing))]
@@ -112,7 +111,7 @@ fn nested_within_if_expr() {
fn _check_try_binds_tighter() -> Result<(), ()> {
if let 0 = 0? {}
- //[feature,no_feature]~^ ERROR the `?` operator can only be applied to values that implement `Try`
+ //[e2021,e2024]~^ ERROR the `?` operator can only be applied to values that implement `Try`
Ok(())
}
if (let 0 = 0)? {}
@@ -133,7 +132,7 @@ fn _check_try_binds_tighter() -> Result<(), ()> {
if true..(let 0 = 0) {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
if ..(let 0 = 0) {}
//~^ ERROR expected expression, found `let` statement
if (let 0 = 0).. {}
@@ -142,22 +141,22 @@ fn _check_try_binds_tighter() -> Result<(), ()> {
// Binds as `(let ... = true)..true &&/|| false`.
if let Range { start: _, end: _ } = true..true && false {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
if let Range { start: _, end: _ } = true..true || false {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| 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 expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
// Binds as `(let Range { start: true, end } = t)..(&&false)`.
let t = &&true;
if let Range { start: true, end } = t..&&false {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
if let true = let true = true {}
//~^ ERROR expected expression, found `let` statement
@@ -203,7 +202,7 @@ fn nested_within_while_expr() {
fn _check_try_binds_tighter() -> Result<(), ()> {
while let 0 = 0? {}
- //[feature,no_feature]~^ ERROR the `?` operator can only be applied to values that implement `Try`
+ //[e2021,e2024]~^ ERROR the `?` operator can only be applied to values that implement `Try`
Ok(())
}
while (let 0 = 0)? {}
@@ -224,7 +223,7 @@ fn _check_try_binds_tighter() -> Result<(), ()> {
while true..(let 0 = 0) {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
while ..(let 0 = 0) {}
//~^ ERROR expected expression, found `let` statement
while (let 0 = 0).. {}
@@ -233,22 +232,22 @@ fn _check_try_binds_tighter() -> Result<(), ()> {
// Binds as `(let ... = true)..true &&/|| false`.
while let Range { start: _, end: _ } = true..true && false {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
while let Range { start: _, end: _ } = true..true || false {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| 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 expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
// Binds as `(let Range { start: true, end } = t)..(&&false)`.
let t = &&true;
while let Range { start: true, end } = t..&&false {}
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
while let true = let true = true {}
//~^ ERROR expected expression, found `let` statement
@@ -307,7 +306,7 @@ fn outside_if_and_while_expr() {
fn _check_try_binds_tighter() -> Result<(), ()> {
let 0 = 0?;
- //[feature,no_feature]~^ ERROR the `?` operator can only be applied to values that implement `Try`
+ //[e2021,e2024]~^ ERROR the `?` operator can only be applied to values that implement `Try`
Ok(())
}
(let 0 = 0)?;
@@ -333,7 +332,7 @@ fn _check_try_binds_tighter() -> Result<(), ()> {
(let Range { start: _, end: _ } = true..true || false);
//~^ ERROR expected expression, found `let` statement
- //[feature,no_feature]~| ERROR mismatched types
+ //[e2021,e2024]~| ERROR mismatched types
(let true = let true = true);
//~^ ERROR expected expression, found `let` statement
@@ -406,7 +405,7 @@ fn with_parenthesis() {
//~| ERROR expected expression, found `let` statement
}
if let Some(a) = opt && (true && true) {
- //[no_feature]~^ ERROR `let` expressions in this position are unstable
+ //[e2021]~^ ERROR let chains are only allowed in Rust 2024 or later
}
if (let Some(a) = opt && (let Some(b) = a)) && b == 1 {
@@ -422,18 +421,18 @@ fn with_parenthesis() {
}
if (true && (true)) && let Some(a) = opt {
- //[no_feature]~^ ERROR `let` expressions in this position are unstable
+ //[e2021]~^ ERROR let chains are only allowed in Rust 2024 or later
}
if (true) && let Some(a) = opt {
- //[no_feature]~^ ERROR `let` expressions in this position are unstable
+ //[e2021]~^ ERROR let chains are only allowed in Rust 2024 or later
}
if true && let Some(a) = opt {
- //[no_feature]~^ ERROR `let` expressions in this position are unstable
+ //[e2021]~^ ERROR let chains are only allowed in Rust 2024 or later
}
let fun = || true;
if let true = (true && fun()) && (true) {
- //[no_feature]~^ ERROR `let` expressions in this position are unstable
+ //[e2021]~^ ERROR let chains are only allowed in Rust 2024 or later
}
#[cfg(false)]
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2021.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2021.stderr
index 23700f8..7fc91e9 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2021.stderr
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2021.stderr
@@ -1,65 +1,42 @@
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:19:30
|
LL | macro_in_2021::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:19:52
|
LL | macro_in_2021::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:22:5
|
LL | macro_in_2021::make_if!(let (Some(0)) let (Some(0)) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= note: this error originates in the macro `macro_in_2021::make_if` (in Nightly builds, run with -Z macro-backtrace for more info)
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:22:5
|
LL | macro_in_2021::make_if!(let (Some(0)) let (Some(0)) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= note: this error originates in the macro `macro_in_2021::make_if` (in Nightly builds, run with -Z macro-backtrace for more info)
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:26:30
|
LL | macro_in_2024::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:26:52
|
LL | macro_in_2024::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
error: aborting due to 6 previous errors
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2024.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2024.stderr
index 3af844f..35ac848 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2024.stderr
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.edition2024.stderr
@@ -1,45 +1,30 @@
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:19:30
|
LL | macro_in_2021::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:19:52
|
LL | macro_in_2021::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:22:5
|
LL | macro_in_2021::make_if!(let (Some(0)) let (Some(0)) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= note: this error originates in the macro `macro_in_2021::make_if` (in Nightly builds, run with -Z macro-backtrace for more info)
-error[E0658]: `let` expressions in this position are unstable
+error: let chains are only allowed in Rust 2024 or later
--> $DIR/edition-gate-macro-error.rs:22:5
|
LL | macro_in_2021::make_if!(let (Some(0)) let (Some(0)) { never!() } { never!() });
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= note: this error originates in the macro `macro_in_2021::make_if` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 4 previous errors
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.rs b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.rs
index 89b555d..a56c112 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.rs
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate-macro-error.rs
@@ -17,14 +17,14 @@ fn main() {
// No gating if both the `if` and the chain are from a 2024 macro
macro_in_2021::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
- //~^ ERROR `let` expressions in this position are unstable
- //~| ERROR `let` expressions in this position are unstable
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
+ //~| ERROR let chains are only allowed in Rust 2024 or later
macro_in_2021::make_if!(let (Some(0)) let (Some(0)) { never!() } { never!() });
- //~^ ERROR `let` expressions in this position are unstable
- //~| ERROR `let` expressions in this position are unstable
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
+ //~| ERROR let chains are only allowed in Rust 2024 or later
macro_in_2024::make_if!((let Some(0) = None && let Some(0) = None) { never!() } { never!() });
- //[edition2021]~^ ERROR `let` expressions in this position are unstable
- //[edition2021]~| ERROR `let` expressions in this position are unstable
+ //[edition2021]~^ ERROR let chains are only allowed in Rust 2024 or later
+ //[edition2021]~| ERROR let chains are only allowed in Rust 2024 or later
macro_in_2024::make_if!(let (Some(0)) let (Some(0)) { never!() } { never!() });
}
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/feature-gate.rs b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate.rs
similarity index 61%
rename from tests/ui/rfcs/rfc-2497-if-let-chains/feature-gate.rs
rename to tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate.rs
index dad02b7..0096e69 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/feature-gate.rs
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate.rs
@@ -1,6 +1,4 @@
-// gate-test-let_chains
-
-// Here we test feature gating for ´let_chains`.
+// Here we test Rust 2024 edition gating for ´let_chains`.
// See `disallowed-positions.rs` for the grammar
// defining the language for gated allowed positions.
@@ -12,17 +10,17 @@ fn _if() {
if let 0 = 1 {} // Stable!
if true && let 0 = 1 {}
- //~^ ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
if let 0 = 1 && true {}
- //~^ ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
if let Range { start: _, end: _ } = (true..true) && false {}
- //~^ ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
if let 1 = 1 && let true = { true } && false {
- //~^ ERROR `let` expressions in this position are unstable [E0658]
- //~| ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
+ //~| ERROR let chains are only allowed in Rust 2024 or later
}
}
@@ -30,13 +28,13 @@ fn _while() {
while let 0 = 1 {} // Stable!
while true && let 0 = 1 {}
- //~^ ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
while let 0 = 1 && true {}
- //~^ ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
while let Range { start: _, end: _ } = (true..true) && false {}
- //~^ ERROR `let` expressions in this position are unstable [E0658]
+ //~^ ERROR let chains are only allowed in Rust 2024 or later
}
fn _macros() {
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate.stderr
new file mode 100644
index 0000000..f75dd85
--- /dev/null
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/edition-gate.stderr
@@ -0,0 +1,81 @@
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:12:16
+ |
+LL | if true && let 0 = 1 {}
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:15:8
+ |
+LL | if let 0 = 1 && true {}
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:18:8
+ |
+LL | if let Range { start: _, end: _ } = (true..true) && false {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:21:8
+ |
+LL | if let 1 = 1 && let true = { true } && false {
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:21:21
+ |
+LL | if let 1 = 1 && let true = { true } && false {
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:30:19
+ |
+LL | while true && let 0 = 1 {}
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:33:11
+ |
+LL | while let 0 = 1 && true {}
+ | ^^^^^^^^^
+
+error: let chains are only allowed in Rust 2024 or later
+ --> $DIR/edition-gate.rs:36:11
+ |
+LL | while let Range { start: _, end: _ } = (true..true) && false {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: expected expression, found `let` statement
+ --> $DIR/edition-gate.rs:52:20
+ |
+LL | #[cfg(false)] (let 0 = 1);
+ | ^^^
+ |
+ = note: only supported directly in conditions of `if` and `while` expressions
+
+error: expected expression, found `let` statement
+ --> $DIR/edition-gate.rs:43:17
+ |
+LL | noop_expr!((let 0 = 1));
+ | ^^^
+ |
+ = note: only supported directly in conditions of `if` and `while` expressions
+
+error: no rules expected keyword `let`
+ --> $DIR/edition-gate.rs:54:15
+ |
+LL | macro_rules! use_expr {
+ | --------------------- when calling this macro
+...
+LL | use_expr!(let 0 = 1);
+ | ^^^ no rules expected this token in macro call
+ |
+note: while trying to match meta-variable `$e:expr`
+ --> $DIR/edition-gate.rs:47:10
+ |
+LL | ($e:expr) => {
+ | ^^^^^^^
+
+error: aborting due to 11 previous errors
+
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/feature-gate.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/feature-gate.stderr
deleted file mode 100644
index b9dac47..0000000
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/feature-gate.stderr
+++ /dev/null
@@ -1,114 +0,0 @@
-error: expected expression, found `let` statement
- --> $DIR/feature-gate.rs:54:20
- |
-LL | #[cfg(false)] (let 0 = 1);
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: expected expression, found `let` statement
- --> $DIR/feature-gate.rs:45:17
- |
-LL | noop_expr!((let 0 = 1));
- | ^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error: no rules expected keyword `let`
- --> $DIR/feature-gate.rs:56:15
- |
-LL | macro_rules! use_expr {
- | --------------------- when calling this macro
-...
-LL | use_expr!(let 0 = 1);
- | ^^^ no rules expected this token in macro call
- |
-note: while trying to match meta-variable `$e:expr`
- --> $DIR/feature-gate.rs:49:10
- |
-LL | ($e:expr) => {
- | ^^^^^^^
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:14:16
- |
-LL | if true && let 0 = 1 {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:17:8
- |
-LL | if let 0 = 1 && true {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:20:8
- |
-LL | if let Range { start: _, end: _ } = (true..true) && false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:23:8
- |
-LL | if let 1 = 1 && let true = { true } && false {
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:23:21
- |
-LL | if let 1 = 1 && let true = { true } && false {
- | ^^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:32:19
- |
-LL | while true && let 0 = 1 {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:35:11
- |
-LL | while let 0 = 1 && true {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/feature-gate.rs:38:11
- |
-LL | while let Range { start: _, end: _ } = (true..true) && false {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
- = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error: aborting due to 11 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs b/tests/ui/rfcs/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs
index ae525ae..3711dd5a 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/invalid-let-in-a-valid-let-context.rs
@@ -1,4 +1,4 @@
-#![feature(let_chains)]
+//@ edition: 2024
fn main() {
let _opt = Some(1i32);
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr b/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr
index 130d029..008e769 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.disallowed.stderr
@@ -1,19 +1,19 @@
error: leading irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:13:8
+ --> $DIR/irrefutable-lets.rs:14:8
|
-LL | if let first = &opt && let Some(ref second) = first && let None = second.start {}
+LL | if let first = &opt && let Some(second) = first && let None = second.start {}
| ^^^^^^^^^^^^^^^^
|
= note: this pattern will always match
= help: consider moving it outside of the construct
note: the lint level is defined here
- --> $DIR/irrefutable-lets.rs:6:30
+ --> $DIR/irrefutable-lets.rs:7:30
|
LL | #![cfg_attr(disallowed, deny(irrefutable_let_patterns))]
| ^^^^^^^^^^^^^^^^^^^^^^^^
error: irrefutable `if let` patterns
- --> $DIR/irrefutable-lets.rs:19:8
+ --> $DIR/irrefutable-lets.rs:20:8
|
LL | if let first = &opt && let (a, b) = (1, 2) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -22,25 +22,25 @@
= help: consider replacing the `if let` with a `let`
error: leading irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:22:8
+ --> $DIR/irrefutable-lets.rs:23:8
|
-LL | if let first = &opt && let Some(ref second) = first && let None = second.start && let v = 0 {}
+LL | if let first = &opt && let Some(second) = first && let None = second.start && let v = 0 {}
| ^^^^^^^^^^^^^^^^
|
= note: this pattern will always match
= help: consider moving it outside of the construct
error: trailing irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:22:87
+ --> $DIR/irrefutable-lets.rs:23:83
|
-LL | if let first = &opt && let Some(ref second) = first && let None = second.start && let v = 0 {}
- | ^^^^^^^^^
+LL | if let first = &opt && let Some(second) = first && let None = second.start && let v = 0 {}
+ | ^^^^^^^^^
|
= note: this pattern will always match
= help: consider moving it into the body
error: trailing irrefutable patterns in let chain
- --> $DIR/irrefutable-lets.rs:26:37
+ --> $DIR/irrefutable-lets.rs:27:37
|
LL | if let Some(ref first) = opt && let second = first && let _third = second {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -49,7 +49,7 @@
= help: consider moving them into the body
error: leading irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:29:8
+ --> $DIR/irrefutable-lets.rs:30:8
|
LL | if let Range { start: local_start, end: _ } = (None..Some(1)) && let None = local_start {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -58,7 +58,7 @@
= help: consider moving it outside of the construct
error: leading irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:32:8
+ --> $DIR/irrefutable-lets.rs:33:8
|
LL | if let (a, b, c) = (Some(1), Some(1), Some(1)) && let None = Some(1) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -67,7 +67,7 @@
= help: consider moving it outside of the construct
error: leading irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:35:8
+ --> $DIR/irrefutable-lets.rs:36:8
|
LL | if let first = &opt && let None = Some(1) {}
| ^^^^^^^^^^^^^^^^
@@ -76,7 +76,7 @@
= help: consider moving it outside of the construct
error: irrefutable `if let` guard patterns
- --> $DIR/irrefutable-lets.rs:44:28
+ --> $DIR/irrefutable-lets.rs:45:28
|
LL | Some(ref first) if let second = first && let _third = second && let v = 4 + 4 => {},
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -85,7 +85,7 @@
= help: consider removing the guard and adding a `let` inside the match arm
error: trailing irrefutable patterns in let chain
- --> $DIR/irrefutable-lets.rs:59:16
+ --> $DIR/irrefutable-lets.rs:60:16
|
LL | && let v = local_end && let w = v => {},
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -94,7 +94,7 @@
= help: consider moving them into the body
error: irrefutable `while let` patterns
- --> $DIR/irrefutable-lets.rs:68:11
+ --> $DIR/irrefutable-lets.rs:69:11
|
LL | while let first = &opt && let (a, b) = (1, 2) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -103,7 +103,7 @@
= help: consider instead using a `loop { ... }` with a `let` inside it
error: trailing irrefutable patterns in let chain
- --> $DIR/irrefutable-lets.rs:71:40
+ --> $DIR/irrefutable-lets.rs:72:40
|
LL | while let Some(ref first) = opt && let second = first && let _third = second {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -112,7 +112,7 @@
= help: consider moving them into the body
error: trailing irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:87:12
+ --> $DIR/irrefutable-lets.rs:88:12
|
LL | && let x = &opt
| ^^^^^^^^^^^^
@@ -121,7 +121,7 @@
= help: consider moving it into the body
error: leading irrefutable pattern in let chain
- --> $DIR/irrefutable-lets.rs:93:12
+ --> $DIR/irrefutable-lets.rs:94:12
|
LL | if let x = opt.clone().map(|_| 1)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.rs b/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.rs
index e7d69f8..c8b9ac3 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.rs
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/irrefutable-lets.rs
@@ -1,7 +1,8 @@
//@ revisions: allowed disallowed
//@[allowed] check-pass
+//@ edition: 2024
-#![feature(if_let_guard, let_chains)]
+#![feature(if_let_guard)]
#![cfg_attr(allowed, allow(irrefutable_let_patterns))]
#![cfg_attr(disallowed, deny(irrefutable_let_patterns))]
@@ -10,16 +11,16 @@
fn main() {
let opt = Some(None..Some(1));
- if let first = &opt && let Some(ref second) = first && let None = second.start {}
+ if let first = &opt && let Some(second) = first && let None = second.start {}
//[disallowed]~^ ERROR leading irrefutable pattern in let chain
// No lint as the irrefutable pattern is surrounded by other stuff
- if 4 * 2 == 0 && let first = &opt && let Some(ref second) = first && let None = second.start {}
+ if 4 * 2 == 0 && let first = &opt && let Some(second) = first && let None = second.start {}
if let first = &opt && let (a, b) = (1, 2) {}
//[disallowed]~^ ERROR irrefutable `if let` patterns
- if let first = &opt && let Some(ref second) = first && let None = second.start && let v = 0 {}
+ if let first = &opt && let Some(second) = first && let None = second.start && let v = 0 {}
//[disallowed]~^ ERROR leading irrefutable pattern in let chain
//[disallowed]~^^ ERROR trailing irrefutable pattern in let chain
@@ -63,7 +64,7 @@ fn main() {
// No error, despite the prefix being irrefutable: moving out could change the behaviour,
// due to possible side effects of the operation.
- while let first = &opt && let Some(ref second) = first && let None = second.start {}
+ while let first = &opt && let Some(second) = first && let None = second.start {}
while let first = &opt && let (a, b) = (1, 2) {}
//[disallowed]~^ ERROR irrefutable `while let` patterns
diff --git a/tests/ui/rfcs/rfc-2497-if-let-chains/then-else-blocks.rs b/tests/ui/rfcs/rfc-2497-if-let-chains/then-else-blocks.rs
index 6d307be..287c73b 100644
--- a/tests/ui/rfcs/rfc-2497-if-let-chains/then-else-blocks.rs
+++ b/tests/ui/rfcs/rfc-2497-if-let-chains/then-else-blocks.rs
@@ -1,6 +1,7 @@
//@ run-pass
+//@ edition: 2024
-#![feature(if_let_guard, let_chains)]
+#![feature(if_let_guard)]
fn check_if_let(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
if let Some(first) = opt