summaryrefslogtreecommitdiffstats
path: root/tests/ui/expr
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/expr')
-rw-r--r--tests/ui/expr/malformed_closure/missing_braces_around_block.fixed9
-rw-r--r--tests/ui/expr/malformed_closure/missing_braces_around_block.rs9
-rw-r--r--tests/ui/expr/malformed_closure/missing_braces_around_block.stderr33
3 files changed, 45 insertions, 6 deletions
diff --git a/tests/ui/expr/malformed_closure/missing_braces_around_block.fixed b/tests/ui/expr/malformed_closure/missing_braces_around_block.fixed
index c50b9a12b..a7a9db7d9 100644
--- a/tests/ui/expr/malformed_closure/missing_braces_around_block.fixed
+++ b/tests/ui/expr/malformed_closure/missing_braces_around_block.fixed
@@ -4,16 +4,23 @@
// If this recovery happens, then plenty of errors are emitted. Here, we expect
// only one error.
//
-// This is part of issue #88065:
+// This is part of the following issues:
// https://github.com/rust-lang/rust/issues/88065
+// https://github.com/rust-lang/rust/issues/107959
// run-rustfix
fn main() {
+ // Closure with multiple expressions delimited by semicolon.
let num = 5;
(1..num).reduce(|a, b| {
//~^ ERROR: closure bodies that contain statements must be surrounded by braces
println!("{}", a);
a * b
}).unwrap();
+
+ // Closure with a single expression ended by a semicolon.
+ let mut v = vec![1, 2, 3];
+ v.iter_mut().for_each(|x| {*x = *x+1;});
+ //~^ ERROR: closure bodies that contain statements must be surrounded by braces
}
diff --git a/tests/ui/expr/malformed_closure/missing_braces_around_block.rs b/tests/ui/expr/malformed_closure/missing_braces_around_block.rs
index 58c81f3a6..b5690b2ec 100644
--- a/tests/ui/expr/malformed_closure/missing_braces_around_block.rs
+++ b/tests/ui/expr/malformed_closure/missing_braces_around_block.rs
@@ -4,16 +4,23 @@
// If this recovery happens, then plenty of errors are emitted. Here, we expect
// only one error.
//
-// This is part of issue #88065:
+// This is part of the following issues:
// https://github.com/rust-lang/rust/issues/88065
+// https://github.com/rust-lang/rust/issues/107959
// run-rustfix
fn main() {
+ // Closure with multiple expressions delimited by semicolon.
let num = 5;
(1..num).reduce(|a, b|
//~^ ERROR: closure bodies that contain statements must be surrounded by braces
println!("{}", a);
a * b
).unwrap();
+
+ // Closure with a single expression ended by a semicolon.
+ let mut v = vec![1, 2, 3];
+ v.iter_mut().for_each(|x|*x = *x+1;);
+ //~^ ERROR: closure bodies that contain statements must be surrounded by braces
}
diff --git a/tests/ui/expr/malformed_closure/missing_braces_around_block.stderr b/tests/ui/expr/malformed_closure/missing_braces_around_block.stderr
index dac9a8cfc..039eef909 100644
--- a/tests/ui/expr/malformed_closure/missing_braces_around_block.stderr
+++ b/tests/ui/expr/malformed_closure/missing_braces_around_block.stderr
@@ -1,5 +1,5 @@
error: closure bodies that contain statements must be surrounded by braces
- --> $DIR/missing_braces_around_block.rs:14:26
+ --> $DIR/missing_braces_around_block.rs:16:26
|
LL | (1..num).reduce(|a, b|
| ^
@@ -8,14 +8,14 @@ LL | ).unwrap();
| ^
|
note: statement found outside of a block
- --> $DIR/missing_braces_around_block.rs:16:26
+ --> $DIR/missing_braces_around_block.rs:18:26
|
LL | println!("{}", a);
| -----------------^ this `;` turns the preceding closure into a statement
| |
| this expression is a statement because of the trailing semicolon
note: the closure body may be incorrectly delimited
- --> $DIR/missing_braces_around_block.rs:14:21
+ --> $DIR/missing_braces_around_block.rs:16:21
|
LL | (1..num).reduce(|a, b|
| _____________________^
@@ -34,5 +34,30 @@ LL | a * b
LL ~ }).unwrap();
|
-error: aborting due to previous error
+error: closure bodies that contain statements must be surrounded by braces
+ --> $DIR/missing_braces_around_block.rs:24:29
+ |
+LL | v.iter_mut().for_each(|x|*x = *x+1;);
+ | ^ ^
+ |
+note: statement found outside of a block
+ --> $DIR/missing_braces_around_block.rs:24:39
+ |
+LL | v.iter_mut().for_each(|x|*x = *x+1;);
+ | ---------^ this `;` turns the preceding closure into a statement
+ | |
+ | this expression is a statement because of the trailing semicolon
+note: the closure body may be incorrectly delimited
+ --> $DIR/missing_braces_around_block.rs:24:27
+ |
+LL | v.iter_mut().for_each(|x|*x = *x+1;);
+ | ^^^^^^^^^^^^ - ...but likely you meant the closure to end here
+ | |
+ | this is the parsed closure...
+help: try adding braces
+ |
+LL | v.iter_mut().for_each(|x| {*x = *x+1;});
+ | + +
+
+error: aborting due to 2 previous errors