Error message for top-level or-patterns suggesting a solution

This commit is contained in:
Kornel
2025-05-09 18:57:07 +09:00
parent da1e442ebd
commit fc20650c6a
13 changed files with 28 additions and 28 deletions
+2 -2
View File
@@ -690,8 +690,8 @@ parse_nul_in_c_str = null characters in C string literals are not supported
parse_or_in_let_chain = `||` operators are not supported in let chain conditions
parse_or_pattern_not_allowed_in_fn_parameters = top-level or-patterns are not allowed in function parameters
parse_or_pattern_not_allowed_in_let_binding = top-level or-patterns are not allowed in `let` bindings
parse_or_pattern_not_allowed_in_fn_parameters = function parameters require top-level or-patterns in parentheses
parse_or_pattern_not_allowed_in_let_binding = `let` bindings require top-level or-patterns in parentheses
parse_out_of_range_hex_escape = out of range hex escape
.label = must be a character in the range [\x00-\x7f]
@@ -10,4 +10,4 @@ enum E { A, B }
use E::*;
#[cfg(false)]
fn fun1((A | B): E) {} //~ ERROR top-level or-patterns are not allowed
fn fun1((A | B): E) {} //~ ERROR function parameters require top-level or-patterns in parentheses
+1 -1
View File
@@ -10,4 +10,4 @@ enum E { A, B }
use E::*;
#[cfg(false)]
fn fun1(A | B: E) {} //~ ERROR top-level or-patterns are not allowed
fn fun1(A | B: E) {} //~ ERROR function parameters require top-level or-patterns in parentheses
@@ -1,4 +1,4 @@
error: top-level or-patterns are not allowed in function parameters
error: function parameters require top-level or-patterns in parentheses
--> $DIR/fn-param-wrap-parens.rs:13:9
|
LL | fn fun1(A | B: E) {}
@@ -17,7 +17,7 @@ fn foo() {
let b @ (A | B): E = A;
let b @ A | B: E = A; //~ERROR `b` is not bound in all patterns
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
}
enum F {
@@ -32,13 +32,13 @@ fn bar() {
let (A(x) | B(x)): F = A(3);
let &A(_) | B(_): F = A(3); //~ERROR mismatched types
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
let &&A(_) | B(_): F = A(3); //~ERROR mismatched types
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
let &mut A(_) | B(_): F = A(3); //~ERROR mismatched types
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
let &&mut A(_) | B(_): F = A(3); //~ERROR mismatched types
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
}
fn main() {}
@@ -1,4 +1,4 @@
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/nested-undelimited-precedence.rs:19:9
|
LL | let b @ A | B: E = A;
@@ -9,7 +9,7 @@ help: wrap the pattern in parentheses
LL | let (b @ A | B): E = A;
| + +
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/nested-undelimited-precedence.rs:34:9
|
LL | let &A(_) | B(_): F = A(3);
@@ -20,7 +20,7 @@ help: wrap the pattern in parentheses
LL | let (&A(_) | B(_)): F = A(3);
| + +
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/nested-undelimited-precedence.rs:36:9
|
LL | let &&A(_) | B(_): F = A(3);
@@ -31,7 +31,7 @@ help: wrap the pattern in parentheses
LL | let (&&A(_) | B(_)): F = A(3);
| + +
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/nested-undelimited-precedence.rs:38:9
|
LL | let &mut A(_) | B(_): F = A(3);
@@ -42,7 +42,7 @@ help: wrap the pattern in parentheses
LL | let (&mut A(_) | B(_)): F = A(3);
| + +
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/nested-undelimited-precedence.rs:40:9
|
LL | let &&mut A(_) | B(_): F = A(3);
@@ -16,18 +16,18 @@ fn no_top_level_or_patterns() {
fn no_top_level_or_patterns_2() {
// ...and for now neither do we allow or-patterns at the top level of functions.
fn fun1(A | B: E) {}
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR function parameters require top-level or-patterns in parentheses
fn fun2(| A | B: E) {}
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR function parameters require top-level or-patterns in parentheses
// We don't allow top-level or-patterns before type annotation in let-statements because we
// want to reserve this syntactic space for possible future type ascription.
let A | B: E = A;
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
let | A | B: E = A;
//~^ ERROR top-level or-patterns are not allowed
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
let (A | B): E = A; // ok -- wrapped in parens
}
@@ -11,7 +11,7 @@ help: you might have meant to open the body of the closure
LL | let _ = |A | { B: E| ();
| +
error: top-level or-patterns are not allowed in function parameters
error: function parameters require top-level or-patterns in parentheses
--> $DIR/or-patterns-syntactic-fail.rs:18:13
|
LL | fn fun1(A | B: E) {}
@@ -22,7 +22,7 @@ help: wrap the pattern in parentheses
LL | fn fun1((A | B): E) {}
| + +
error: top-level or-patterns are not allowed in function parameters
error: function parameters require top-level or-patterns in parentheses
--> $DIR/or-patterns-syntactic-fail.rs:21:13
|
LL | fn fun2(| A | B: E) {}
@@ -33,7 +33,7 @@ help: wrap the pattern in parentheses
LL | fn fun2((| A | B): E) {}
| + +
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/or-patterns-syntactic-fail.rs:26:9
|
LL | let A | B: E = A;
@@ -44,7 +44,7 @@ help: wrap the pattern in parentheses
LL | let (A | B): E = A;
| + +
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/or-patterns-syntactic-fail.rs:29:9
|
LL | let | A | B: E = A;
@@ -8,7 +8,7 @@ fn main() {}
#[cfg(false)]
fn leading() {
fn fun1( A: E) {} //~ ERROR top-level or-patterns are not allowed
fn fun1( A: E) {} //~ ERROR function parameters require top-level or-patterns in parentheses
fn fun2( A: E) {} //~ ERROR unexpected `||` before function parameter
let ( | A): E;
let ( | A): (E); //~ ERROR unexpected token `||` in pattern
+1 -1
View File
@@ -8,7 +8,7 @@ fn main() {}
#[cfg(false)]
fn leading() {
fn fun1( | A: E) {} //~ ERROR top-level or-patterns are not allowed
fn fun1( | A: E) {} //~ ERROR function parameters require top-level or-patterns in parentheses
fn fun2( || A: E) {} //~ ERROR unexpected `||` before function parameter
let ( | A): E;
let ( || A): (E); //~ ERROR unexpected token `||` in pattern
@@ -1,4 +1,4 @@
error: top-level or-patterns are not allowed in function parameters
error: function parameters require top-level or-patterns in parentheses
--> $DIR/remove-leading-vert.rs:11:14
|
LL | fn fun1( | A: E) {}
@@ -65,7 +65,7 @@ fn parse(x: Void) {
let res: Result<bool, Void> = Ok(false);
let Ok(_) = res;
let Ok(_) | Err(!) = &res; // Disallowed; see #82048.
//~^ ERROR top-level or-patterns are not allowed in `let` bindings
//~^ ERROR `let` bindings require top-level or-patterns in parentheses
let (Ok(_) | Err(!)) = &res;
let (Ok(_) | Err(&!)) = res.as_ref();
@@ -26,7 +26,7 @@ error: expected one of `,`, `=>`, `if`, `|`, or `}`, found `<=`
LL | Some(!) <=
| ^^ expected one of `,`, `=>`, `if`, `|`, or `}`
error: top-level or-patterns are not allowed in `let` bindings
error: `let` bindings require top-level or-patterns in parentheses
--> $DIR/parse.rs:67:9
|
LL | let Ok(_) | Err(!) = &res; // Disallowed; see #82048.