Rollup merge of #51099 - Crazycolorz5:expectedcloseparen, r=estebank
Fix Issue 38777 When looking through for a closing bracket in the loop condition, adds them to expecteds. https://github.com/rust-lang/rust/issues/38777
This commit is contained in:
commit
71865fb947
@ -652,7 +652,7 @@ impl<'a> Parser<'a> {
|
|||||||
Err(err)
|
Err(err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
self.expect_one_of(unsafe { slice::from_raw_parts(t, 1) }, &[])
|
self.expect_one_of(slice::from_ref(t), &[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1108,7 +1108,12 @@ impl<'a> Parser<'a> {
|
|||||||
{
|
{
|
||||||
let mut first: bool = true;
|
let mut first: bool = true;
|
||||||
let mut v = vec![];
|
let mut v = vec![];
|
||||||
while !kets.contains(&&self.token) {
|
while !kets.iter().any(|k| {
|
||||||
|
match expect {
|
||||||
|
TokenExpectType::Expect => self.check(k),
|
||||||
|
TokenExpectType::NoExpect => self.token == **k,
|
||||||
|
}
|
||||||
|
}) {
|
||||||
match self.token {
|
match self.token {
|
||||||
token::CloseDelim(..) | token::Eof => break,
|
token::CloseDelim(..) | token::Eof => break,
|
||||||
_ => {}
|
_ => {}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
fn foo(a: [0; 1]) {} //~ ERROR expected type, found `0`
|
fn foo(a: [0; 1]) {} //~ ERROR expected type, found `0`
|
||||||
//~| ERROR expected one of `->`, `where`, or `{`, found `]`
|
//~| ERROR expected one of `)`, `,`, `->`, `where`, or `{`, found `]`
|
||||||
// FIXME(jseyfried): avoid emitting the second error (preexisting)
|
// FIXME(jseyfried): avoid emitting the second error (preexisting)
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -10,11 +10,11 @@ note: unclosed delimiter
|
|||||||
LL | callback(path.as_ref(); //~ ERROR expected one of
|
LL | callback(path.as_ref(); //~ ERROR expected one of
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: expected one of `,`, `.`, `?`, or an operator, found `;`
|
error: expected one of `)`, `,`, `.`, `?`, or an operator, found `;`
|
||||||
--> $DIR/token-error-correct-3.rs:24:35
|
--> $DIR/token-error-correct-3.rs:24:35
|
||||||
|
|
|
|
||||||
LL | callback(path.as_ref(); //~ ERROR expected one of
|
LL | callback(path.as_ref(); //~ ERROR expected one of
|
||||||
| ^ expected one of `,`, `.`, `?`, or an operator here
|
| ^ expected one of `)`, `,`, `.`, `?`, or an operator here
|
||||||
|
|
||||||
error: expected one of `.`, `;`, `?`, `}`, or an operator, found `)`
|
error: expected one of `.`, `;`, `?`, `}`, or an operator, found `)`
|
||||||
--> $DIR/token-error-correct-3.rs:30:9
|
--> $DIR/token-error-correct-3.rs:30:9
|
||||||
|
@ -14,6 +14,6 @@ mod x {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// `.` is similar to `,` so list parsing should continue to closing `}`
|
// `.` is similar to `,` so list parsing should continue to closing `}`
|
||||||
use x::{A. B}; //~ ERROR expected one of `,`, `::`, or `as`, found `.`
|
use x::{A. B}; //~ ERROR expected one of `,`, `::`, `as`, or `}`, found `.`
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
error: expected one of `,`, `::`, or `as`, found `.`
|
error: expected one of `,`, `::`, `as`, or `}`, found `.`
|
||||||
--> $DIR/similar-tokens.rs:17:10
|
--> $DIR/similar-tokens.rs:17:10
|
||||||
|
|
|
|
||||||
LL | use x::{A. B}; //~ ERROR expected one of `,`, `::`, or `as`, found `.`
|
LL | use x::{A. B}; //~ ERROR expected one of `,`, `::`, `as`, or `}`, found `.`
|
||||||
| ^ expected one of `,`, `::`, or `as` here
|
| ^ expected one of `,`, `::`, `as`, or `}` here
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@ note: unclosed delimiter
|
|||||||
LL | option.map(|some| 42;
|
LL | option.map(|some| 42;
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: expected one of `,`, `.`, `?`, or an operator, found `;`
|
error: expected one of `)`, `,`, `.`, `?`, or an operator, found `;`
|
||||||
--> $DIR/issue-10636-2.rs:15:25
|
--> $DIR/issue-10636-2.rs:15:25
|
||||||
|
|
|
|
||||||
LL | option.map(|some| 42;
|
LL | option.map(|some| 42;
|
||||||
| ^ expected one of `,`, `.`, `?`, or an operator here
|
| ^ expected one of `)`, `,`, `.`, `?`, or an operator here
|
||||||
|
|
||||||
error: expected expression, found `)`
|
error: expected expression, found `)`
|
||||||
--> $DIR/issue-10636-2.rs:18:1
|
--> $DIR/issue-10636-2.rs:18:1
|
||||||
|
@ -12,6 +12,6 @@ mod foo {
|
|||||||
type T = ();
|
type T = ();
|
||||||
struct S1(pub(in foo) (), pub(T), pub(crate) (), pub(((), T)));
|
struct S1(pub(in foo) (), pub(T), pub(crate) (), pub(((), T)));
|
||||||
struct S2(pub((foo)) ());
|
struct S2(pub((foo)) ());
|
||||||
//~^ ERROR expected `,`, found `(`
|
//~^ ERROR expected one of `)` or `,`, found `(`
|
||||||
//~| ERROR cannot find type `foo` in this scope
|
//~| ERROR cannot find type `foo` in this scope
|
||||||
}
|
}
|
20
src/test/ui/tuple-struct-fields/test.stderr
Normal file
20
src/test/ui/tuple-struct-fields/test.stderr
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
error: expected one of `)` or `,`, found `(`
|
||||||
|
--> $DIR/test.rs:14:26
|
||||||
|
|
|
||||||
|
LL | struct S2(pub((foo)) ());
|
||||||
|
| ^ expected one of `)` or `,` here
|
||||||
|
|
||||||
|
error[E0412]: cannot find type `foo` in this scope
|
||||||
|
--> $DIR/test.rs:14:20
|
||||||
|
|
|
||||||
|
LL | struct S2(pub((foo)) ());
|
||||||
|
| ^^^ not found in this scope
|
||||||
|
|
||||||
|
error[E0601]: `main` function not found in crate `test`
|
||||||
|
|
|
||||||
|
= note: consider adding a `main` function to `$DIR/test.rs`
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
Some errors occurred: E0412, E0601.
|
||||||
|
For more information about an error, try `rustc --explain E0412`.
|
@ -13,7 +13,7 @@ macro_rules! define_struct {
|
|||||||
struct S1(pub $t);
|
struct S1(pub $t);
|
||||||
struct S2(pub (in foo) ());
|
struct S2(pub (in foo) ());
|
||||||
struct S3(pub $t ());
|
struct S3(pub $t ());
|
||||||
//~^ ERROR expected `,`, found `(`
|
//~^ ERROR expected one of `)` or `,`, found `(`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
src/test/ui/tuple-struct-fields/test2.stderr
Normal file
11
src/test/ui/tuple-struct-fields/test2.stderr
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
error: expected one of `)` or `,`, found `(`
|
||||||
|
--> $DIR/test2.rs:15:26
|
||||||
|
|
|
||||||
|
LL | struct S3(pub $t ());
|
||||||
|
| ^ expected one of `)` or `,` here
|
||||||
|
...
|
||||||
|
LL | define_struct! { (foo) }
|
||||||
|
| ------------------------ in this macro invocation
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
@ -13,7 +13,7 @@ macro_rules! define_struct {
|
|||||||
struct S1(pub($t));
|
struct S1(pub($t));
|
||||||
struct S2(pub (in foo) ());
|
struct S2(pub (in foo) ());
|
||||||
struct S3(pub($t) ());
|
struct S3(pub($t) ());
|
||||||
//~^ ERROR expected `,`, found `(`
|
//~^ ERROR expected one of `)` or `,`, found `(`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
src/test/ui/tuple-struct-fields/test3.stderr
Normal file
11
src/test/ui/tuple-struct-fields/test3.stderr
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
error: expected one of `)` or `,`, found `(`
|
||||||
|
--> $DIR/test3.rs:15:27
|
||||||
|
|
|
||||||
|
LL | struct S3(pub($t) ());
|
||||||
|
| ^ expected one of `)` or `,` here
|
||||||
|
...
|
||||||
|
LL | define_struct! { foo }
|
||||||
|
| ---------------------- in this macro invocation
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Reference in New Issue
Block a user