summaryrefslogtreecommitdiffstats
path: root/tests/ui/parser
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/parser')
-rw-r--r--tests/ui/parser/assoc-static-semantic-fail.rs4
-rw-r--r--tests/ui/parser/assoc-static-semantic-fail.stderr10
-rw-r--r--tests/ui/parser/attr-stmt-expr-attr-bad.rs2
-rw-r--r--tests/ui/parser/attr-stmt-expr-attr-bad.stderr115
-rw-r--r--tests/ui/parser/circular_modules_main.stderr2
-rw-r--r--tests/ui/parser/default.rs2
-rw-r--r--tests/ui/parser/default.stderr6
-rw-r--r--tests/ui/parser/dyn-trait-compatibility.rs2
-rw-r--r--tests/ui/parser/dyn-trait-compatibility.stderr16
-rw-r--r--tests/ui/parser/fn-header-semantic-fail.rs3
-rw-r--r--tests/ui/parser/fn-header-semantic-fail.stderr146
-rw-r--r--tests/ui/parser/ident-recovery.rs16
-rw-r--r--tests/ui/parser/ident-recovery.stderr42
-rw-r--r--tests/ui/parser/integer-literal-start-ident.rs2
-rw-r--r--tests/ui/parser/integer-literal-start-ident.stderr14
-rw-r--r--tests/ui/parser/issues/issue-104088.rs25
-rw-r--r--tests/ui/parser/issues/issue-104088.stderr56
-rw-r--r--tests/ui/parser/issues/issue-108242-semicolon-recovery.rs5
-rw-r--r--tests/ui/parser/issues/issue-108242-semicolon-recovery.stderr13
-rw-r--r--tests/ui/parser/issues/issue-110014.rs3
-rw-r--r--tests/ui/parser/issues/issue-110014.stderr19
-rw-r--r--tests/ui/parser/issues/issue-48508.rs1
-rw-r--r--tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs14
-rw-r--r--tests/ui/parser/removed-syntax-box.fixed14
-rw-r--r--tests/ui/parser/removed-syntax-box.rs14
-rw-r--r--tests/ui/parser/removed-syntax-box.stderr57
-rw-r--r--tests/ui/parser/trait-pub-assoc-const.rs2
-rw-r--r--tests/ui/parser/trait-pub-assoc-const.stderr6
-rw-r--r--tests/ui/parser/trait-pub-assoc-ty.rs2
-rw-r--r--tests/ui/parser/trait-pub-assoc-ty.stderr6
-rw-r--r--tests/ui/parser/trait-pub-method.rs2
-rw-r--r--tests/ui/parser/trait-pub-method.stderr6
32 files changed, 372 insertions, 255 deletions
diff --git a/tests/ui/parser/assoc-static-semantic-fail.rs b/tests/ui/parser/assoc-static-semantic-fail.rs
index a8759d209..403160f12 100644
--- a/tests/ui/parser/assoc-static-semantic-fail.rs
+++ b/tests/ui/parser/assoc-static-semantic-fail.rs
@@ -31,7 +31,7 @@ trait T {
//~| ERROR a static item cannot be `default`
pub(crate) default static TD: u8;
//~^ ERROR associated `static` items are not allowed
- //~| ERROR unnecessary visibility qualifier
+ //~| ERROR visibility qualifiers are not permitted here
//~| ERROR a static item cannot be `default`
}
@@ -47,6 +47,6 @@ impl T for S {
pub default static TD: u8;
//~^ ERROR associated `static` items are not allowed
//~| ERROR associated constant in `impl` without body
- //~| ERROR unnecessary visibility qualifier
+ //~| ERROR visibility qualifiers are not permitted here
//~| ERROR a static item cannot be `default`
}
diff --git a/tests/ui/parser/assoc-static-semantic-fail.stderr b/tests/ui/parser/assoc-static-semantic-fail.stderr
index 8a74f49b9..8178bd223 100644
--- a/tests/ui/parser/assoc-static-semantic-fail.stderr
+++ b/tests/ui/parser/assoc-static-semantic-fail.stderr
@@ -134,11 +134,13 @@ LL | pub(crate) default static ID: u8;
| |
| help: provide a definition for the constant: `= <expr>;`
-error[E0449]: unnecessary visibility qualifier
+error[E0449]: visibility qualifiers are not permitted here
--> $DIR/assoc-static-semantic-fail.rs:32:5
|
LL | pub(crate) default static TD: u8;
| ^^^^^^^^^^
+ |
+ = note: trait items always share the visibility of their trait
error: associated constant in `impl` without body
--> $DIR/assoc-static-semantic-fail.rs:41:5
@@ -156,11 +158,13 @@ LL | pub default static TD: u8;
| |
| help: provide a definition for the constant: `= <expr>;`
-error[E0449]: unnecessary visibility qualifier
+error[E0449]: visibility qualifiers are not permitted here
--> $DIR/assoc-static-semantic-fail.rs:47:5
|
LL | pub default static TD: u8;
- | ^^^ `pub` not permitted here because it's implied
+ | ^^^
+ |
+ = note: trait items always share the visibility of their trait
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/assoc-static-semantic-fail.rs:3:12
diff --git a/tests/ui/parser/attr-stmt-expr-attr-bad.rs b/tests/ui/parser/attr-stmt-expr-attr-bad.rs
index 469c3855c..c94a32146 100644
--- a/tests/ui/parser/attr-stmt-expr-attr-bad.rs
+++ b/tests/ui/parser/attr-stmt-expr-attr-bad.rs
@@ -1,7 +1,5 @@
fn main() {}
-#[cfg(FALSE)] fn e() { let _ = box #![attr] 0; }
-//~^ ERROR an inner attribute is not permitted in this context
#[cfg(FALSE)] fn e() { let _ = [#[attr]]; }
//~^ ERROR expected expression, found `]`
#[cfg(FALSE)] fn e() { let _ = foo#[attr](); }
diff --git a/tests/ui/parser/attr-stmt-expr-attr-bad.stderr b/tests/ui/parser/attr-stmt-expr-attr-bad.stderr
index 872c560cb..a857f11fd 100644
--- a/tests/ui/parser/attr-stmt-expr-attr-bad.stderr
+++ b/tests/ui/parser/attr-stmt-expr-attr-bad.stderr
@@ -1,26 +1,17 @@
-error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:3:36
- |
-LL | #[cfg(FALSE)] fn e() { let _ = box #![attr] 0; }
- | ^^^^^^^^
- |
- = note: inner attributes, like `#![no_std]`, annotate the item enclosing them, and are usually found at the beginning of source files
- = note: outer attributes, like `#[test]`, annotate the item following them
-
error: expected expression, found `]`
- --> $DIR/attr-stmt-expr-attr-bad.rs:5:40
+ --> $DIR/attr-stmt-expr-attr-bad.rs:3:40
|
LL | #[cfg(FALSE)] fn e() { let _ = [#[attr]]; }
| ^ expected expression
error: expected one of `!`, `.`, `::`, `;`, `?`, `else`, `{`, or an operator, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:7:35
+ --> $DIR/attr-stmt-expr-attr-bad.rs:5:35
|
LL | #[cfg(FALSE)] fn e() { let _ = foo#[attr](); }
| ^ expected one of 8 possible tokens
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:9:36
+ --> $DIR/attr-stmt-expr-attr-bad.rs:7:36
|
LL | #[cfg(FALSE)] fn e() { let _ = foo(#![attr]); }
| ^^^^^^^^
@@ -29,13 +20,13 @@ LL | #[cfg(FALSE)] fn e() { let _ = foo(#![attr]); }
= note: outer attributes, like `#[test]`, annotate the item following them
error: expected expression, found `)`
- --> $DIR/attr-stmt-expr-attr-bad.rs:9:44
+ --> $DIR/attr-stmt-expr-attr-bad.rs:7:44
|
LL | #[cfg(FALSE)] fn e() { let _ = foo(#![attr]); }
| ^ expected expression
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:12:38
+ --> $DIR/attr-stmt-expr-attr-bad.rs:10:38
|
LL | #[cfg(FALSE)] fn e() { let _ = x.foo(#![attr]); }
| ^^^^^^^^
@@ -44,13 +35,13 @@ LL | #[cfg(FALSE)] fn e() { let _ = x.foo(#![attr]); }
= note: outer attributes, like `#[test]`, annotate the item following them
error: expected expression, found `)`
- --> $DIR/attr-stmt-expr-attr-bad.rs:12:46
+ --> $DIR/attr-stmt-expr-attr-bad.rs:10:46
|
LL | #[cfg(FALSE)] fn e() { let _ = x.foo(#![attr]); }
| ^ expected expression
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:15:36
+ --> $DIR/attr-stmt-expr-attr-bad.rs:13:36
|
LL | #[cfg(FALSE)] fn e() { let _ = 0 + #![attr] 0; }
| ^^^^^^^^
@@ -59,7 +50,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = 0 + #![attr] 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:17:33
+ --> $DIR/attr-stmt-expr-attr-bad.rs:15:33
|
LL | #[cfg(FALSE)] fn e() { let _ = !#![attr] 0; }
| ^^^^^^^^
@@ -68,7 +59,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = !#![attr] 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:19:33
+ --> $DIR/attr-stmt-expr-attr-bad.rs:17:33
|
LL | #[cfg(FALSE)] fn e() { let _ = -#![attr] 0; }
| ^^^^^^^^
@@ -77,13 +68,13 @@ LL | #[cfg(FALSE)] fn e() { let _ = -#![attr] 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: expected one of `!`, `.`, `::`, `;`, `?`, `else`, `{`, or an operator, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:21:34
+ --> $DIR/attr-stmt-expr-attr-bad.rs:19:34
|
LL | #[cfg(FALSE)] fn e() { let _ = x #![attr] as Y; }
| ^ expected one of 8 possible tokens
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:23:35
+ --> $DIR/attr-stmt-expr-attr-bad.rs:21:35
|
LL | #[cfg(FALSE)] fn e() { let _ = || #![attr] foo; }
| ^^^^^^^^
@@ -92,7 +83,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = || #![attr] foo; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:25:40
+ --> $DIR/attr-stmt-expr-attr-bad.rs:23:40
|
LL | #[cfg(FALSE)] fn e() { let _ = move || #![attr] foo; }
| ^^^^^^^^
@@ -101,7 +92,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = move || #![attr] foo; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:27:35
+ --> $DIR/attr-stmt-expr-attr-bad.rs:25:35
|
LL | #[cfg(FALSE)] fn e() { let _ = || #![attr] {foo}; }
| ^^^^^^^^
@@ -110,7 +101,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = || #![attr] {foo}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:29:40
+ --> $DIR/attr-stmt-expr-attr-bad.rs:27:40
|
LL | #[cfg(FALSE)] fn e() { let _ = move || #![attr] {foo}; }
| ^^^^^^^^
@@ -119,19 +110,19 @@ LL | #[cfg(FALSE)] fn e() { let _ = move || #![attr] {foo}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: expected expression, found `..`
- --> $DIR/attr-stmt-expr-attr-bad.rs:31:40
+ --> $DIR/attr-stmt-expr-attr-bad.rs:29:40
|
LL | #[cfg(FALSE)] fn e() { let _ = #[attr] ..#[attr] 0; }
| ^^ expected expression
error: expected expression, found `..`
- --> $DIR/attr-stmt-expr-attr-bad.rs:33:40
+ --> $DIR/attr-stmt-expr-attr-bad.rs:31:40
|
LL | #[cfg(FALSE)] fn e() { let _ = #[attr] ..; }
| ^^ expected expression
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:35:41
+ --> $DIR/attr-stmt-expr-attr-bad.rs:33:41
|
LL | #[cfg(FALSE)] fn e() { let _ = #[attr] &#![attr] 0; }
| ^^^^^^^^
@@ -140,7 +131,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = #[attr] &#![attr] 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:37:45
+ --> $DIR/attr-stmt-expr-attr-bad.rs:35:45
|
LL | #[cfg(FALSE)] fn e() { let _ = #[attr] &mut #![attr] 0; }
| ^^^^^^^^
@@ -149,7 +140,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = #[attr] &mut #![attr] 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:39:37
+ --> $DIR/attr-stmt-expr-attr-bad.rs:37:37
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 #[attr] {}; }
| -- ^^^^^^^ -- the attributes are attached to this branch
@@ -158,7 +149,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 #[attr] {}; }
| the branch belongs to this `if`
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:41:38
+ --> $DIR/attr-stmt-expr-attr-bad.rs:39:38
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {#![attr]}; }
| ^^^^^^^^
@@ -167,13 +158,13 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 {#![attr]}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: expected one of `.`, `;`, `?`, `else`, or an operator, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:43:40
+ --> $DIR/attr-stmt-expr-attr-bad.rs:41:40
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} #[attr] else {}; }
| ^ expected one of `.`, `;`, `?`, `else`, or an operator
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:45:45
+ --> $DIR/attr-stmt-expr-attr-bad.rs:43:45
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else #[attr] {}; }
| ---- ^^^^^^^ -- the attributes are attached to this branch
@@ -182,7 +173,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else #[attr] {}; }
| the branch belongs to this `else`
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:47:46
+ --> $DIR/attr-stmt-expr-attr-bad.rs:45:46
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else {#![attr]}; }
| ^^^^^^^^
@@ -191,7 +182,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else {#![attr]}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:49:45
+ --> $DIR/attr-stmt-expr-attr-bad.rs:47:45
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else #[attr] if 0 {}; }
| ---- ^^^^^^^ ------- the attributes are attached to this branch
@@ -200,7 +191,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else #[attr] if 0 {}; }
| the branch belongs to this `else`
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:51:50
+ --> $DIR/attr-stmt-expr-attr-bad.rs:49:50
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else if 0 #[attr] {}; }
| -- ^^^^^^^ -- the attributes are attached to this branch
@@ -209,7 +200,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else if 0 #[attr] {}; }
| the branch belongs to this `if`
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:53:51
+ --> $DIR/attr-stmt-expr-attr-bad.rs:51:51
|
LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else if 0 {#![attr]}; }
| ^^^^^^^^
@@ -218,7 +209,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if 0 {} else if 0 {#![attr]}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:55:45
+ --> $DIR/attr-stmt-expr-attr-bad.rs:53:45
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 #[attr] {}; }
| -- ^^^^^^^ -- the attributes are attached to this branch
@@ -227,7 +218,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 #[attr] {}; }
| the branch belongs to this `if`
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:57:46
+ --> $DIR/attr-stmt-expr-attr-bad.rs:55:46
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {#![attr]}; }
| ^^^^^^^^
@@ -236,13 +227,13 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {#![attr]}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: expected one of `.`, `;`, `?`, `else`, or an operator, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:59:48
+ --> $DIR/attr-stmt-expr-attr-bad.rs:57:48
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} #[attr] else {}; }
| ^ expected one of `.`, `;`, `?`, `else`, or an operator
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:61:53
+ --> $DIR/attr-stmt-expr-attr-bad.rs:59:53
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else #[attr] {}; }
| ---- ^^^^^^^ -- the attributes are attached to this branch
@@ -251,7 +242,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else #[attr] {}; }
| the branch belongs to this `else`
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:63:54
+ --> $DIR/attr-stmt-expr-attr-bad.rs:61:54
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else {#![attr]}; }
| ^^^^^^^^
@@ -260,7 +251,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else {#![attr]}; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:65:53
+ --> $DIR/attr-stmt-expr-attr-bad.rs:63:53
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else #[attr] if let _ = 0 {}; }
| ---- ^^^^^^^ --------------- the attributes are attached to this branch
@@ -269,7 +260,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else #[attr] if let _ = 0 {}
| the branch belongs to this `else`
error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/attr-stmt-expr-attr-bad.rs:67:66
+ --> $DIR/attr-stmt-expr-attr-bad.rs:65:66
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else if let _ = 0 #[attr] {}; }
| -- ^^^^^^^ -- the attributes are attached to this branch
@@ -278,7 +269,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else if let _ = 0 #[attr] {}
| the branch belongs to this `if`
error: an inner attribute is not permitted in this context
- --> $DIR/attr-stmt-expr-attr-bad.rs:69:67
+ --> $DIR/attr-stmt-expr-attr-bad.rs:67:67
|
LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else if let _ = 0 {#![attr]}; }
| ^^^^^^^^
@@ -287,7 +278,7 @@ LL | #[cfg(FALSE)] fn e() { let _ = if let _ = 0 {} else if let _ = 0 {#![attr]}
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted following an outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:72:32
+ --> $DIR/attr-stmt-expr-attr-bad.rs:70:32
|
LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] let _ = 0; }
| ------- ^^^^^^^^ not permitted following an outer attribute
@@ -298,7 +289,7 @@ LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] let _ = 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted following an outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:74:32
+ --> $DIR/attr-stmt-expr-attr-bad.rs:72:32
|
LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] 0; }
| ------- ^^^^^^^^ not permitted following an outer attribute
@@ -309,7 +300,7 @@ LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] 0; }
= note: outer attributes, like `#[test]`, annotate the item following them
error: an inner attribute is not permitted following an outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:76:32
+ --> $DIR/attr-stmt-expr-attr-bad.rs:74:32
|
LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] foo!(); }
| ------- ^^^^^^^^ ------- the inner attribute doesn't annotate this item macro invocation
@@ -325,7 +316,7 @@ LL + #[cfg(FALSE)] fn s() { #[attr] #[attr] foo!(); }
|
error: an inner attribute is not permitted following an outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:78:32
+ --> $DIR/attr-stmt-expr-attr-bad.rs:76:32
|
LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] foo![]; }
| ------- ^^^^^^^^ ------- the inner attribute doesn't annotate this item macro invocation
@@ -341,7 +332,7 @@ LL + #[cfg(FALSE)] fn s() { #[attr] #[attr] foo![]; }
|
error: an inner attribute is not permitted following an outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:80:32
+ --> $DIR/attr-stmt-expr-attr-bad.rs:78:32
|
LL | #[cfg(FALSE)] fn s() { #[attr] #![attr] foo!{}; }
| ------- ^^^^^^^^ ------ the inner attribute doesn't annotate this item macro invocation
@@ -357,7 +348,7 @@ LL + #[cfg(FALSE)] fn s() { #[attr] #[attr] foo!{}; }
|
error[E0586]: inclusive range with no end
- --> $DIR/attr-stmt-expr-attr-bad.rs:86:35
+ --> $DIR/attr-stmt-expr-attr-bad.rs:84:35
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] 10 => () } }
| ^^^ help: use `..` instead
@@ -365,13 +356,13 @@ LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] 10 => () } }
= note: inclusive ranges must be bounded at the end (`..=b` or `a..=b`)
error: expected one of `=>`, `if`, or `|`, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:86:38
+ --> $DIR/attr-stmt-expr-attr-bad.rs:84:38
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] 10 => () } }
| ^ expected one of `=>`, `if`, or `|`
error[E0586]: inclusive range with no end
- --> $DIR/attr-stmt-expr-attr-bad.rs:89:35
+ --> $DIR/attr-stmt-expr-attr-bad.rs:87:35
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] -10 => () } }
| ^^^ help: use `..` instead
@@ -379,19 +370,19 @@ LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] -10 => () } }
= note: inclusive ranges must be bounded at the end (`..=b` or `a..=b`)
error: expected one of `=>`, `if`, or `|`, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:89:38
+ --> $DIR/attr-stmt-expr-attr-bad.rs:87:38
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] -10 => () } }
| ^ expected one of `=>`, `if`, or `|`
error: unexpected token: `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:92:39
+ --> $DIR/attr-stmt-expr-attr-bad.rs:90:39
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=-#[attr] 10 => () } }
| ^
error[E0586]: inclusive range with no end
- --> $DIR/attr-stmt-expr-attr-bad.rs:94:35
+ --> $DIR/attr-stmt-expr-attr-bad.rs:92:35
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] FOO => () } }
| ^^^ help: use `..` instead
@@ -399,47 +390,47 @@ LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] FOO => () } }
= note: inclusive ranges must be bounded at the end (`..=b` or `a..=b`)
error: expected one of `=>`, `if`, or `|`, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:94:38
+ --> $DIR/attr-stmt-expr-attr-bad.rs:92:38
|
LL | #[cfg(FALSE)] fn e() { match 0 { 0..=#[attr] FOO => () } }
| ^ expected one of `=>`, `if`, or `|`
error: unexpected token: `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:98:34
+ --> $DIR/attr-stmt-expr-attr-bad.rs:96:34
|
LL | #[cfg(FALSE)] fn e() { let _ = x.#![attr]foo(); }
| ^
error: expected one of `.`, `;`, `?`, `else`, or an operator, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:98:34
+ --> $DIR/attr-stmt-expr-attr-bad.rs:96:34
|
LL | #[cfg(FALSE)] fn e() { let _ = x.#![attr]foo(); }
| ^ expected one of `.`, `;`, `?`, `else`, or an operator
error: unexpected token: `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:101:34
+ --> $DIR/attr-stmt-expr-attr-bad.rs:99:34
|
LL | #[cfg(FALSE)] fn e() { let _ = x.#[attr]foo(); }
| ^
error: expected one of `.`, `;`, `?`, `else`, or an operator, found `#`
- --> $DIR/attr-stmt-expr-attr-bad.rs:101:34
+ --> $DIR/attr-stmt-expr-attr-bad.rs:99:34
|
LL | #[cfg(FALSE)] fn e() { let _ = x.#[attr]foo(); }
| ^ expected one of `.`, `;`, `?`, `else`, or an operator
error: expected statement after outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:106:37
+ --> $DIR/attr-stmt-expr-attr-bad.rs:104:37
|
LL | #[cfg(FALSE)] fn e() { { fn foo() { #[attr]; } } }
| ^^^^^^^
error: expected statement after outer attribute
- --> $DIR/attr-stmt-expr-attr-bad.rs:108:37
+ --> $DIR/attr-stmt-expr-attr-bad.rs:106:37
|
LL | #[cfg(FALSE)] fn e() { { fn foo() { #[attr] } } }
| ^^^^^^^
-error: aborting due to 53 previous errors
+error: aborting due to 52 previous errors
For more information about this error, try `rustc --explain E0586`.
diff --git a/tests/ui/parser/circular_modules_main.stderr b/tests/ui/parser/circular_modules_main.stderr
index 1094def60..2de707893 100644
--- a/tests/ui/parser/circular_modules_main.stderr
+++ b/tests/ui/parser/circular_modules_main.stderr
@@ -12,7 +12,7 @@ LL | println!("{}", circular_modules_main::hi_str());
|
help: consider importing this function
|
-LL | use hi_str;
+LL + use hi_str;
|
help: if you import `hi_str`, refer to it directly
|
diff --git a/tests/ui/parser/default.rs b/tests/ui/parser/default.rs
index 52338c1f1..d1058ceb2 100644
--- a/tests/ui/parser/default.rs
+++ b/tests/ui/parser/default.rs
@@ -14,7 +14,7 @@ impl Foo for u8 {
}
impl Foo for u16 {
- pub default fn foo<T: Default>() -> T { //~ ERROR unnecessary visibility qualifier
+ pub default fn foo<T: Default>() -> T { //~ ERROR visibility qualifiers are not permitted here
T::default()
}
}
diff --git a/tests/ui/parser/default.stderr b/tests/ui/parser/default.stderr
index 37aa48ccf..e6330f368 100644
--- a/tests/ui/parser/default.stderr
+++ b/tests/ui/parser/default.stderr
@@ -17,11 +17,13 @@ LL | default pub fn foo<T: Default>() -> T { T::default() }
LL | }
| - item list ends here
-error[E0449]: unnecessary visibility qualifier
+error[E0449]: visibility qualifiers are not permitted here
--> $DIR/default.rs:17:5
|
LL | pub default fn foo<T: Default>() -> T {
- | ^^^ `pub` not permitted here because it's implied
+ | ^^^
+ |
+ = note: trait items always share the visibility of their trait
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/default.rs:3:12
diff --git a/tests/ui/parser/dyn-trait-compatibility.rs b/tests/ui/parser/dyn-trait-compatibility.rs
index d2b02cc2a..6341e0532 100644
--- a/tests/ui/parser/dyn-trait-compatibility.rs
+++ b/tests/ui/parser/dyn-trait-compatibility.rs
@@ -9,6 +9,6 @@ type A2 = dyn<dyn, dyn>;
type A3 = dyn<<dyn as dyn>::dyn>;
//~^ ERROR cannot find type `dyn` in this scope
//~| ERROR cannot find type `dyn` in this scope
-//~| ERROR use of undeclared crate or module `dyn`
+//~| ERROR cannot find trait `dyn` in this scope
fn main() {}
diff --git a/tests/ui/parser/dyn-trait-compatibility.stderr b/tests/ui/parser/dyn-trait-compatibility.stderr
index 0cae01bd1..653be5b3b 100644
--- a/tests/ui/parser/dyn-trait-compatibility.stderr
+++ b/tests/ui/parser/dyn-trait-compatibility.stderr
@@ -4,12 +4,6 @@ error[E0433]: failed to resolve: use of undeclared crate or module `dyn`
LL | type A1 = dyn::dyn;
| ^^^ use of undeclared crate or module `dyn`
-error[E0433]: failed to resolve: use of undeclared crate or module `dyn`
- --> $DIR/dyn-trait-compatibility.rs:9:23
- |
-LL | type A3 = dyn<<dyn as dyn>::dyn>;
- | ^^^ use of undeclared crate or module `dyn`
-
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:1:11
|
@@ -40,6 +34,12 @@ error[E0412]: cannot find type `dyn` in this scope
LL | type A3 = dyn<<dyn as dyn>::dyn>;
| ^^^ not found in this scope
+error[E0405]: cannot find trait `dyn` in this scope
+ --> $DIR/dyn-trait-compatibility.rs:9:23
+ |
+LL | type A3 = dyn<<dyn as dyn>::dyn>;
+ | ^^^ not found in this scope
+
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:9:16
|
@@ -48,5 +48,5 @@ LL | type A3 = dyn<<dyn as dyn>::dyn>;
error: aborting due to 8 previous errors
-Some errors have detailed explanations: E0412, E0433.
-For more information about an error, try `rustc --explain E0412`.
+Some errors have detailed explanations: E0405, E0412, E0433.
+For more information about an error, try `rustc --explain E0405`.
diff --git a/tests/ui/parser/fn-header-semantic-fail.rs b/tests/ui/parser/fn-header-semantic-fail.rs
index cf5d3dab4..71f18a27e 100644
--- a/tests/ui/parser/fn-header-semantic-fail.rs
+++ b/tests/ui/parser/fn-header-semantic-fail.rs
@@ -11,7 +11,6 @@ fn main() {
extern "C" fn ff4() {} // OK.
const async unsafe extern "C" fn ff5() {}
//~^ ERROR functions cannot be both `const` and `async`
- //~| ERROR cycle detected
trait X {
async fn ft1(); //~ ERROR functions in traits cannot be declared `async`
@@ -34,7 +33,6 @@ fn main() {
//~^ ERROR functions in traits cannot be declared `async`
//~| ERROR functions in traits cannot be declared const
//~| ERROR functions cannot be both `const` and `async`
- //~| ERROR cycle detected
}
impl Y {
@@ -44,7 +42,6 @@ fn main() {
extern "C" fn fi4() {} // OK.
const async unsafe extern "C" fn fi5() {}
//~^ ERROR functions cannot be both `const` and `async`
- //~| ERROR cycle detected
}
extern "C" {
diff --git a/tests/ui/parser/fn-header-semantic-fail.stderr b/tests/ui/parser/fn-header-semantic-fail.stderr
index 2d8bd19a7..7f7b7e835 100644
--- a/tests/ui/parser/fn-header-semantic-fail.stderr
+++ b/tests/ui/parser/fn-header-semantic-fail.stderr
@@ -8,19 +8,19 @@ LL | const async unsafe extern "C" fn ff5() {}
| `const` because of this
error[E0379]: functions in traits cannot be declared const
- --> $DIR/fn-header-semantic-fail.rs:19:9
+ --> $DIR/fn-header-semantic-fail.rs:18:9
|
LL | const fn ft3();
| ^^^^^ functions in traits cannot be const
error[E0379]: functions in traits cannot be declared const
- --> $DIR/fn-header-semantic-fail.rs:21:9
+ --> $DIR/fn-header-semantic-fail.rs:20:9
|
LL | const async unsafe extern "C" fn ft5();
| ^^^^^ functions in traits cannot be const
error: functions cannot be both `const` and `async`
- --> $DIR/fn-header-semantic-fail.rs:21:9
+ --> $DIR/fn-header-semantic-fail.rs:20:9
|
LL | const async unsafe extern "C" fn ft5();
| ^^^^^-^^^^^----------------------------
@@ -29,19 +29,19 @@ LL | const async unsafe extern "C" fn ft5();
| `const` because of this
error[E0379]: functions in traits cannot be declared const
- --> $DIR/fn-header-semantic-fail.rs:31:9
+ --> $DIR/fn-header-semantic-fail.rs:30:9
|
LL | const fn ft3() {}
| ^^^^^ functions in traits cannot be const
error[E0379]: functions in traits cannot be declared const
- --> $DIR/fn-header-semantic-fail.rs:33:9
+ --> $DIR/fn-header-semantic-fail.rs:32:9
|
LL | const async unsafe extern "C" fn ft5() {}
| ^^^^^ functions in traits cannot be const
error: functions cannot be both `const` and `async`
- --> $DIR/fn-header-semantic-fail.rs:33:9
+ --> $DIR/fn-header-semantic-fail.rs:32:9
|
LL | const async unsafe extern "C" fn ft5() {}
| ^^^^^-^^^^^------------------------------
@@ -50,7 +50,7 @@ LL | const async unsafe extern "C" fn ft5() {}
| `const` because of this
error: functions cannot be both `const` and `async`
- --> $DIR/fn-header-semantic-fail.rs:45:9
+ --> $DIR/fn-header-semantic-fail.rs:43:9
|
LL | const async unsafe extern "C" fn fi5() {}
| ^^^^^-^^^^^------------------------------
@@ -59,7 +59,7 @@ LL | const async unsafe extern "C" fn fi5() {}
| `const` because of this
error: functions in `extern` blocks cannot have qualifiers
- --> $DIR/fn-header-semantic-fail.rs:51:18
+ --> $DIR/fn-header-semantic-fail.rs:48:18
|
LL | extern "C" {
| ---------- in this `extern` block
@@ -72,7 +72,7 @@ LL | fn fe1();
| ~~
error: functions in `extern` blocks cannot have qualifiers
- --> $DIR/fn-header-semantic-fail.rs:52:19
+ --> $DIR/fn-header-semantic-fail.rs:49:19
|
LL | extern "C" {
| ---------- in this `extern` block
@@ -86,7 +86,7 @@ LL | fn fe2();
| ~~
error: functions in `extern` blocks cannot have qualifiers
- --> $DIR/fn-header-semantic-fail.rs:53:18
+ --> $DIR/fn-header-semantic-fail.rs:50:18
|
LL | extern "C" {
| ---------- in this `extern` block
@@ -100,7 +100,7 @@ LL | fn fe3();
| ~~
error: functions in `extern` blocks cannot have qualifiers
- --> $DIR/fn-header-semantic-fail.rs:54:23
+ --> $DIR/fn-header-semantic-fail.rs:51:23
|
LL | extern "C" {
| ---------- in this `extern` block
@@ -114,7 +114,7 @@ LL | fn fe4();
| ~~
error: functions in `extern` blocks cannot have qualifiers
- --> $DIR/fn-header-semantic-fail.rs:55:42
+ --> $DIR/fn-header-semantic-fail.rs:52:42
|
LL | extern "C" {
| ---------- in this `extern` block
@@ -128,7 +128,7 @@ LL | fn fe5();
| ~~
error: functions cannot be both `const` and `async`
- --> $DIR/fn-header-semantic-fail.rs:55:9
+ --> $DIR/fn-header-semantic-fail.rs:52:9
|
LL | const async unsafe extern "C" fn fe5();
| ^^^^^-^^^^^----------------------------
@@ -137,7 +137,7 @@ LL | const async unsafe extern "C" fn fe5();
| `const` because of this
error[E0706]: functions in traits cannot be declared `async`
- --> $DIR/fn-header-semantic-fail.rs:17:9
+ --> $DIR/fn-header-semantic-fail.rs:16:9
|
LL | async fn ft1();
| -----^^^^^^^^^^
@@ -150,7 +150,7 @@ LL | async fn ft1();
= help: add `#![feature(async_fn_in_trait)]` to the crate attributes to enable
error[E0706]: functions in traits cannot be declared `async`
- --> $DIR/fn-header-semantic-fail.rs:21:9
+ --> $DIR/fn-header-semantic-fail.rs:20:9
|
LL | const async unsafe extern "C" fn ft5();
| ^^^^^^-----^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -163,7 +163,7 @@ LL | const async unsafe extern "C" fn ft5();
= help: add `#![feature(async_fn_in_trait)]` to the crate attributes to enable
error[E0706]: functions in traits cannot be declared `async`
- --> $DIR/fn-header-semantic-fail.rs:29:9
+ --> $DIR/fn-header-semantic-fail.rs:28:9
|
LL | async fn ft1() {}
| -----^^^^^^^^^
@@ -176,7 +176,7 @@ LL | async fn ft1() {}
= help: add `#![feature(async_fn_in_trait)]` to the crate attributes to enable
error[E0706]: functions in traits cannot be declared `async`
- --> $DIR/fn-header-semantic-fail.rs:33:9
+ --> $DIR/fn-header-semantic-fail.rs:32:9
|
LL | const async unsafe extern "C" fn ft5() {}
| ^^^^^^-----^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -188,115 +188,7 @@ LL | const async unsafe extern "C" fn ft5() {}
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= help: add `#![feature(async_fn_in_trait)]` to the crate attributes to enable
-error[E0391]: cycle detected when computing type of `main::ff5::{opaque#0}`
- --> $DIR/fn-header-semantic-fail.rs:12:44
- |
-LL | const async unsafe extern "C" fn ff5() {}
- | ^
- |
-note: ...which requires borrow-checking `main::ff5`...
- --> $DIR/fn-header-semantic-fail.rs:12:5
- |
-LL | const async unsafe extern "C" fn ff5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `main::ff5`...
- --> $DIR/fn-header-semantic-fail.rs:12:5
- |
-LL | const async unsafe extern "C" fn ff5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires const checking `main::ff5`...
- --> $DIR/fn-header-semantic-fail.rs:12:5
- |
-LL | const async unsafe extern "C" fn ff5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = note: ...which requires computing whether `main::ff5::{opaque#0}` is freeze...
- = note: ...which requires evaluating trait selection obligation `main::ff5::{opaque#0}: core::marker::Freeze`...
- = note: ...which again requires computing type of `main::ff5::{opaque#0}`, completing the cycle
-note: cycle used when checking item types in top-level module
- --> $DIR/fn-header-semantic-fail.rs:5:1
- |
-LL | / #![feature(const_extern_fn)]
-LL | |
-LL | | fn main() {
-LL | | async fn ff1() {} // OK.
-... |
-LL | | }
-LL | | }
- | |_^
-
-error[E0391]: cycle detected when computing type of `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5::{opaque#0}`
- --> $DIR/fn-header-semantic-fail.rs:33:48
- |
-LL | const async unsafe extern "C" fn ft5() {}
- | ^
- |
-note: ...which requires borrow-checking `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5`...
- --> $DIR/fn-header-semantic-fail.rs:33:9
- |
-LL | const async unsafe extern "C" fn ft5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5`...
- --> $DIR/fn-header-semantic-fail.rs:33:9
- |
-LL | const async unsafe extern "C" fn ft5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires const checking `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5`...
- --> $DIR/fn-header-semantic-fail.rs:33:9
- |
-LL | const async unsafe extern "C" fn ft5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = note: ...which requires computing whether `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5::{opaque#0}` is freeze...
- = note: ...which requires evaluating trait selection obligation `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5::{opaque#0}: core::marker::Freeze`...
- = note: ...which again requires computing type of `main::<impl at $DIR/fn-header-semantic-fail.rs:28:5: 28:17>::ft5::{opaque#0}`, completing the cycle
-note: cycle used when checking item types in top-level module
- --> $DIR/fn-header-semantic-fail.rs:5:1
- |
-LL | / #![feature(const_extern_fn)]
-LL | |
-LL | | fn main() {
-LL | | async fn ff1() {} // OK.
-... |
-LL | | }
-LL | | }
- | |_^
-
-error[E0391]: cycle detected when computing type of `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5::{opaque#0}`
- --> $DIR/fn-header-semantic-fail.rs:45:48
- |
-LL | const async unsafe extern "C" fn fi5() {}
- | ^
- |
-note: ...which requires borrow-checking `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5`...
- --> $DIR/fn-header-semantic-fail.rs:45:9
- |
-LL | const async unsafe extern "C" fn fi5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires processing MIR for `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5`...
- --> $DIR/fn-header-semantic-fail.rs:45:9
- |
-LL | const async unsafe extern "C" fn fi5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...which requires const checking `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5`...
- --> $DIR/fn-header-semantic-fail.rs:45:9
- |
-LL | const async unsafe extern "C" fn fi5() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = note: ...which requires computing whether `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5::{opaque#0}` is freeze...
- = note: ...which requires evaluating trait selection obligation `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5::{opaque#0}: core::marker::Freeze`...
- = note: ...which again requires computing type of `main::<impl at $DIR/fn-header-semantic-fail.rs:40:5: 40:11>::fi5::{opaque#0}`, completing the cycle
-note: cycle used when checking item types in top-level module
- --> $DIR/fn-header-semantic-fail.rs:5:1
- |
-LL | / #![feature(const_extern_fn)]
-LL | |
-LL | | fn main() {
-LL | | async fn ff1() {} // OK.
-... |
-LL | | }
-LL | | }
- | |_^
-
-error: aborting due to 21 previous errors
+error: aborting due to 18 previous errors
-Some errors have detailed explanations: E0379, E0391, E0706.
+Some errors have detailed explanations: E0379, E0706.
For more information about an error, try `rustc --explain E0379`.
diff --git a/tests/ui/parser/ident-recovery.rs b/tests/ui/parser/ident-recovery.rs
new file mode 100644
index 000000000..7575372b9
--- /dev/null
+++ b/tests/ui/parser/ident-recovery.rs
@@ -0,0 +1,16 @@
+fn ,comma() {
+ //~^ ERROR expected identifier, found `,`
+ struct Foo {
+ x: i32,,
+ //~^ ERROR expected identifier, found `,`
+ y: u32,
+ }
+}
+
+fn break() {
+//~^ ERROR expected identifier, found keyword `break`
+ let continue = 5;
+ //~^ ERROR expected identifier, found keyword `continue`
+}
+
+fn main() {}
diff --git a/tests/ui/parser/ident-recovery.stderr b/tests/ui/parser/ident-recovery.stderr
new file mode 100644
index 000000000..e9a55026d
--- /dev/null
+++ b/tests/ui/parser/ident-recovery.stderr
@@ -0,0 +1,42 @@
+error: expected identifier, found `,`
+ --> $DIR/ident-recovery.rs:1:4
+ |
+LL | fn ,comma() {
+ | ^
+ | |
+ | expected identifier
+ | help: remove this comma
+
+error: expected identifier, found `,`
+ --> $DIR/ident-recovery.rs:4:16
+ |
+LL | x: i32,,
+ | ^
+ | |
+ | expected identifier
+ | help: remove this comma
+
+error: expected identifier, found keyword `break`
+ --> $DIR/ident-recovery.rs:10:4
+ |
+LL | fn break() {
+ | ^^^^^ expected identifier, found keyword
+ |
+help: escape `break` to use it as an identifier
+ |
+LL | fn r#break() {
+ | ++
+
+error: expected identifier, found keyword `continue`
+ --> $DIR/ident-recovery.rs:12:9
+ |
+LL | let continue = 5;
+ | ^^^^^^^^ expected identifier, found keyword
+ |
+help: escape `continue` to use it as an identifier
+ |
+LL | let r#continue = 5;
+ | ++
+
+error: aborting due to 4 previous errors
+
diff --git a/tests/ui/parser/integer-literal-start-ident.rs b/tests/ui/parser/integer-literal-start-ident.rs
new file mode 100644
index 000000000..12537482e
--- /dev/null
+++ b/tests/ui/parser/integer-literal-start-ident.rs
@@ -0,0 +1,2 @@
+fn 1main() {}
+//~^ ERROR expected identifier, found `1main`
diff --git a/tests/ui/parser/integer-literal-start-ident.stderr b/tests/ui/parser/integer-literal-start-ident.stderr
new file mode 100644
index 000000000..b2c661296
--- /dev/null
+++ b/tests/ui/parser/integer-literal-start-ident.stderr
@@ -0,0 +1,14 @@
+error: expected identifier, found `1main`
+ --> $DIR/integer-literal-start-ident.rs:1:4
+ |
+LL | fn 1main() {}
+ | ^^^^^ expected identifier
+ |
+help: identifiers cannot start with a number
+ --> $DIR/integer-literal-start-ident.rs:1:4
+ |
+LL | fn 1main() {}
+ | ^
+
+error: aborting due to previous error
+
diff --git a/tests/ui/parser/issues/issue-104088.rs b/tests/ui/parser/issues/issue-104088.rs
index 5f794fe2d..3dc636b6a 100644
--- a/tests/ui/parser/issues/issue-104088.rs
+++ b/tests/ui/parser/issues/issue-104088.rs
@@ -1,26 +1,19 @@
-fn test() {
+fn 1234test() {
+//~^ ERROR expected identifier, found `1234test`
if let 123 = 123 { println!("yes"); }
-}
-
-fn test_2() {
- let 1x = 123;
- //~^ ERROR expected identifier, found number literal
-}
-
-fn test_3() {
- let 2x: i32 = 123;
- //~^ ERROR expected identifier, found number literal
-}
-fn test_4() {
if let 2e1 = 123 {
//~^ ERROR mismatched types
}
-}
-fn test_5() {
let 23name = 123;
- //~^ ERROR expected identifier, found number literal
+ //~^ ERROR expected identifier, found `23name`
+
+ let 2x: i32 = 123;
+ //~^ ERROR expected identifier, found `2x`
+
+ let 1x = 123;
+ //~^ ERROR expected identifier, found `1x`
}
fn main() {}
diff --git a/tests/ui/parser/issues/issue-104088.stderr b/tests/ui/parser/issues/issue-104088.stderr
index ff4b4bdb6..8b751759d 100644
--- a/tests/ui/parser/issues/issue-104088.stderr
+++ b/tests/ui/parser/issues/issue-104088.stderr
@@ -1,29 +1,59 @@
-error: expected identifier, found number literal
- --> $DIR/issue-104088.rs:6:9
+error: expected identifier, found `1234test`
+ --> $DIR/issue-104088.rs:1:4
|
-LL | let 1x = 123;
- | ^^ identifiers cannot start with a number
+LL | fn 1234test() {
+ | ^^^^^^^^ expected identifier
+ |
+help: identifiers cannot start with a number
+ --> $DIR/issue-104088.rs:1:4
+ |
+LL | fn 1234test() {
+ | ^^^^
+
+error: expected identifier, found `23name`
+ --> $DIR/issue-104088.rs:9:9
+ |
+LL | let 23name = 123;
+ | ^^^^^^ expected identifier
+ |
+help: identifiers cannot start with a number
+ --> $DIR/issue-104088.rs:9:9
+ |
+LL | let 23name = 123;
+ | ^^
-error: expected identifier, found number literal
- --> $DIR/issue-104088.rs:11:9
+error: expected identifier, found `2x`
+ --> $DIR/issue-104088.rs:12:9
|
LL | let 2x: i32 = 123;
- | ^^ identifiers cannot start with a number
+ | ^^ expected identifier
+ |
+help: identifiers cannot start with a number
+ --> $DIR/issue-104088.rs:12:9
+ |
+LL | let 2x: i32 = 123;
+ | ^
-error: expected identifier, found number literal
- --> $DIR/issue-104088.rs:22:9
+error: expected identifier, found `1x`
+ --> $DIR/issue-104088.rs:15:9
|
-LL | let 23name = 123;
- | ^^^^^^ identifiers cannot start with a number
+LL | let 1x = 123;
+ | ^^ expected identifier
+ |
+help: identifiers cannot start with a number
+ --> $DIR/issue-104088.rs:15:9
+ |
+LL | let 1x = 123;
+ | ^
error[E0308]: mismatched types
- --> $DIR/issue-104088.rs:16:12
+ --> $DIR/issue-104088.rs:5:12
|
LL | if let 2e1 = 123 {
| ^^^ --- this expression has type `{integer}`
| |
| expected integer, found floating-point number
-error: aborting due to 4 previous errors
+error: aborting due to 5 previous errors
For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/parser/issues/issue-108242-semicolon-recovery.rs b/tests/ui/parser/issues/issue-108242-semicolon-recovery.rs
new file mode 100644
index 000000000..2fc0b2947
--- /dev/null
+++ b/tests/ui/parser/issues/issue-108242-semicolon-recovery.rs
@@ -0,0 +1,5 @@
+fn foo() {}
+fn main() {
+ foo(;
+ foo(;
+} //~ ERROR mismatched closing delimiter
diff --git a/tests/ui/parser/issues/issue-108242-semicolon-recovery.stderr b/tests/ui/parser/issues/issue-108242-semicolon-recovery.stderr
new file mode 100644
index 000000000..f68d6d501
--- /dev/null
+++ b/tests/ui/parser/issues/issue-108242-semicolon-recovery.stderr
@@ -0,0 +1,13 @@
+error: mismatched closing delimiter: `}`
+ --> $DIR/issue-108242-semicolon-recovery.rs:4:8
+ |
+LL | fn main() {
+ | - closing delimiter possibly meant for this
+LL | foo(;
+LL | foo(;
+ | ^ unclosed delimiter
+LL | }
+ | ^ mismatched closing delimiter
+
+error: aborting due to previous error
+
diff --git a/tests/ui/parser/issues/issue-110014.rs b/tests/ui/parser/issues/issue-110014.rs
new file mode 100644
index 000000000..69d8f402b
--- /dev/null
+++ b/tests/ui/parser/issues/issue-110014.rs
@@ -0,0 +1,3 @@
+fn`2222222222222222222222222222222222222222() {}
+//~^ ERROR unknown start of token: `
+//~^^ ERROR expected identifier, found `2222222222222222222222222222222222222222`
diff --git a/tests/ui/parser/issues/issue-110014.stderr b/tests/ui/parser/issues/issue-110014.stderr
new file mode 100644
index 000000000..7f1dd592e
--- /dev/null
+++ b/tests/ui/parser/issues/issue-110014.stderr
@@ -0,0 +1,19 @@
+error: unknown start of token: `
+ --> $DIR/issue-110014.rs:1:3
+ |
+LL | fn`2222222222222222222222222222222222222222() {}
+ | ^
+ |
+help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not
+ |
+LL | fn'2222222222222222222222222222222222222222() {}
+ | ~
+
+error: expected identifier, found `2222222222222222222222222222222222222222`
+ --> $DIR/issue-110014.rs:1:4
+ |
+LL | fn`2222222222222222222222222222222222222222() {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected identifier
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/parser/issues/issue-48508.rs b/tests/ui/parser/issues/issue-48508.rs
index 37d04c5d6..1e7db9df8 100644
--- a/tests/ui/parser/issues/issue-48508.rs
+++ b/tests/ui/parser/issues/issue-48508.rs
@@ -7,7 +7,6 @@
// issue-48508-aux.rs
// compile-flags:-g
-// ignore-pretty issue #37195
// ignore-asmjs wasm2js does not support source maps yet
#![allow(uncommon_codepoints)]
diff --git a/tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs b/tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs
index 76c07bbfd..b0e8f4d99 100644
--- a/tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs
+++ b/tests/ui/parser/issues/issue-65846-rollback-gating-failing-matcher.rs
@@ -5,11 +5,17 @@
#[allow(unused_macro_rules)]
macro_rules! m {
- ($e:expr) => { 0 }; // This fails on the input below due to `, foo`.
- ($e:expr,) => { 1 }; // This also fails to match due to `foo`.
- (box $e:expr, foo) => { 2 }; // Successful matcher, we should get `2`.
+ ($e:expr) => {
+ 0
+ }; // This fails on the input below due to `, foo`.
+ ($e:expr,) => {
+ 1
+ }; // This also fails to match due to `foo`.
+ (do yeet $e:expr, foo) => {
+ 2
+ }; // Successful matcher, we should get `2`.
}
fn main() {
- assert_eq!(2, m!(box 42, foo));
+ assert_eq!(2, m!(do yeet 42, foo));
}
diff --git a/tests/ui/parser/removed-syntax-box.fixed b/tests/ui/parser/removed-syntax-box.fixed
new file mode 100644
index 000000000..09d1304b7
--- /dev/null
+++ b/tests/ui/parser/removed-syntax-box.fixed
@@ -0,0 +1,14 @@
+// run-rustfix
+
+fn main() {
+ #[allow(dead_code)]
+ struct T {
+ a: u8,
+ b: u8,
+ }
+ let _ = Box::new(()); //~ ERROR `box_syntax` has been removed
+ let _ = Box::new(1); //~ ERROR `box_syntax` has been removed
+ let _ = Box::new(T { a: 12, b: 18 }); //~ ERROR `box_syntax` has been removed
+ let _ = Box::new([5; 30]); //~ ERROR `box_syntax` has been removed
+ let _: Box<()> = Box::new(()); //~ ERROR `box_syntax` has been removed
+}
diff --git a/tests/ui/parser/removed-syntax-box.rs b/tests/ui/parser/removed-syntax-box.rs
new file mode 100644
index 000000000..1f5061b02
--- /dev/null
+++ b/tests/ui/parser/removed-syntax-box.rs
@@ -0,0 +1,14 @@
+// run-rustfix
+
+fn main() {
+ #[allow(dead_code)]
+ struct T {
+ a: u8,
+ b: u8,
+ }
+ let _ = box (); //~ ERROR `box_syntax` has been removed
+ let _ = box 1; //~ ERROR `box_syntax` has been removed
+ let _ = box T { a: 12, b: 18 }; //~ ERROR `box_syntax` has been removed
+ let _ = box [5; 30]; //~ ERROR `box_syntax` has been removed
+ let _: Box<()> = box (); //~ ERROR `box_syntax` has been removed
+}
diff --git a/tests/ui/parser/removed-syntax-box.stderr b/tests/ui/parser/removed-syntax-box.stderr
new file mode 100644
index 000000000..46b891587
--- /dev/null
+++ b/tests/ui/parser/removed-syntax-box.stderr
@@ -0,0 +1,57 @@
+error: `box_syntax` has been removed
+ --> $DIR/removed-syntax-box.rs:9:13
+ |
+LL | let _ = box ();
+ | ^^^^^^
+ |
+help: use `Box::new()` instead
+ |
+LL | let _ = Box::new(());
+ | ~~~~~~~~~~~~
+
+error: `box_syntax` has been removed
+ --> $DIR/removed-syntax-box.rs:10:13
+ |
+LL | let _ = box 1;
+ | ^^^^^
+ |
+help: use `Box::new()` instead
+ |
+LL | let _ = Box::new(1);
+ | ~~~~~~~~~~~
+
+error: `box_syntax` has been removed
+ --> $DIR/removed-syntax-box.rs:11:13
+ |
+LL | let _ = box T { a: 12, b: 18 };
+ | ^^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `Box::new()` instead
+ |
+LL | let _ = Box::new(T { a: 12, b: 18 });
+ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+error: `box_syntax` has been removed
+ --> $DIR/removed-syntax-box.rs:12:13
+ |
+LL | let _ = box [5; 30];
+ | ^^^^^^^^^^^
+ |
+help: use `Box::new()` instead
+ |
+LL | let _ = Box::new([5; 30]);
+ | ~~~~~~~~~~~~~~~~~
+
+error: `box_syntax` has been removed
+ --> $DIR/removed-syntax-box.rs:13:22
+ |
+LL | let _: Box<()> = box ();
+ | ^^^^^^
+ |
+help: use `Box::new()` instead
+ |
+LL | let _: Box<()> = Box::new(());
+ | ~~~~~~~~~~~~
+
+error: aborting due to 5 previous errors
+
diff --git a/tests/ui/parser/trait-pub-assoc-const.rs b/tests/ui/parser/trait-pub-assoc-const.rs
index 219ffa309..7953e12ec 100644
--- a/tests/ui/parser/trait-pub-assoc-const.rs
+++ b/tests/ui/parser/trait-pub-assoc-const.rs
@@ -1,6 +1,6 @@
trait Foo {
pub const Foo: u32;
- //~^ ERROR unnecessary visibility qualifier
+ //~^ ERROR visibility qualifiers are not permitted here
}
fn main() {}
diff --git a/tests/ui/parser/trait-pub-assoc-const.stderr b/tests/ui/parser/trait-pub-assoc-const.stderr
index efd09a036..c14a2f2ee 100644
--- a/tests/ui/parser/trait-pub-assoc-const.stderr
+++ b/tests/ui/parser/trait-pub-assoc-const.stderr
@@ -1,8 +1,10 @@
-error[E0449]: unnecessary visibility qualifier
+error[E0449]: visibility qualifiers are not permitted here
--> $DIR/trait-pub-assoc-const.rs:2:5
|
LL | pub const Foo: u32;
- | ^^^ `pub` not permitted here because it's implied
+ | ^^^
+ |
+ = note: trait items always share the visibility of their trait
error: aborting due to previous error
diff --git a/tests/ui/parser/trait-pub-assoc-ty.rs b/tests/ui/parser/trait-pub-assoc-ty.rs
index a78dfbdcd..5d9434edc 100644
--- a/tests/ui/parser/trait-pub-assoc-ty.rs
+++ b/tests/ui/parser/trait-pub-assoc-ty.rs
@@ -1,6 +1,6 @@
trait Foo {
pub type Foo;
- //~^ ERROR unnecessary visibility qualifier
+ //~^ ERROR visibility qualifiers are not permitted here
}
fn main() {}
diff --git a/tests/ui/parser/trait-pub-assoc-ty.stderr b/tests/ui/parser/trait-pub-assoc-ty.stderr
index e76373f5c..7f6e7350c 100644
--- a/tests/ui/parser/trait-pub-assoc-ty.stderr
+++ b/tests/ui/parser/trait-pub-assoc-ty.stderr
@@ -1,8 +1,10 @@
-error[E0449]: unnecessary visibility qualifier
+error[E0449]: visibility qualifiers are not permitted here
--> $DIR/trait-pub-assoc-ty.rs:2:5
|
LL | pub type Foo;
- | ^^^ `pub` not permitted here because it's implied
+ | ^^^
+ |
+ = note: trait items always share the visibility of their trait
error: aborting due to previous error
diff --git a/tests/ui/parser/trait-pub-method.rs b/tests/ui/parser/trait-pub-method.rs
index 1f6ee028a..c8f33e782 100644
--- a/tests/ui/parser/trait-pub-method.rs
+++ b/tests/ui/parser/trait-pub-method.rs
@@ -1,6 +1,6 @@
trait Foo {
pub fn foo();
- //~^ ERROR unnecessary visibility qualifier
+ //~^ ERROR visibility qualifiers are not permitted here
}
fn main() {}
diff --git a/tests/ui/parser/trait-pub-method.stderr b/tests/ui/parser/trait-pub-method.stderr
index 0e3fe027c..2bf1d468a 100644
--- a/tests/ui/parser/trait-pub-method.stderr
+++ b/tests/ui/parser/trait-pub-method.stderr
@@ -1,8 +1,10 @@
-error[E0449]: unnecessary visibility qualifier
+error[E0449]: visibility qualifiers are not permitted here
--> $DIR/trait-pub-method.rs:2:5
|
LL | pub fn foo();
- | ^^^ `pub` not permitted here because it's implied
+ | ^^^
+ |
+ = note: trait items always share the visibility of their trait
error: aborting due to previous error