Tweak unclosed delimiter parser error
This commit is contained in:
parent
67390c0c31
commit
2a74d7924a
8 changed files with 44 additions and 45 deletions
|
@ -79,11 +79,12 @@ impl<'a> StringReader<'a> {
|
|||
let token_str = token_to_string(&self.token);
|
||||
let msg = format!("incorrect close delimiter: `{}`", token_str);
|
||||
let mut err = self.sess.span_diagnostic.struct_span_err(self.span, &msg);
|
||||
err.span_label(self.span, "incorrect close delimiter");
|
||||
// This is a conservative error: only report the last unclosed delimiter.
|
||||
// The previous unclosed delimiters could actually be closed! The parser
|
||||
// just hasn't gotten to them yet.
|
||||
if let Some(&(_, sp)) = self.open_braces.last() {
|
||||
err.span_note(sp, "unclosed delimiter");
|
||||
err.span_label(sp, "unclosed delimiter");
|
||||
};
|
||||
err.emit();
|
||||
|
||||
|
@ -118,7 +119,8 @@ impl<'a> StringReader<'a> {
|
|||
// matching opening delimiter).
|
||||
let token_str = token_to_string(&self.token);
|
||||
let msg = format!("unexpected close delimiter: `{}`", token_str);
|
||||
let err = self.sess.span_diagnostic.struct_span_err(self.span, &msg);
|
||||
let mut err = self.sess.span_diagnostic.struct_span_err(self.span, &msg);
|
||||
err.span_label(self.span, "unexpected close delimiter");
|
||||
Err(err)
|
||||
},
|
||||
_ => {
|
||||
|
|
|
@ -12,4 +12,8 @@
|
|||
|
||||
struct Obj { //~ NOTE: unclosed delimiter
|
||||
member: usize
|
||||
) //~ ERROR: incorrect close delimiter
|
||||
)
|
||||
//~^ ERROR incorrect close delimiter
|
||||
//~| NOTE incorrect close delimiter
|
||||
|
||||
fn main() {}
|
11
src/test/ui/issue-10636-1.stderr
Normal file
11
src/test/ui/issue-10636-1.stderr
Normal file
|
@ -0,0 +1,11 @@
|
|||
error: incorrect close delimiter: `)`
|
||||
--> $DIR/issue-10636-1.rs:15:1
|
||||
|
|
||||
LL | struct Obj { //~ NOTE: unclosed delimiter
|
||||
| - unclosed delimiter
|
||||
LL | member: usize
|
||||
LL | )
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error: aborting due to previous error
|
||||
|
|
@ -1,14 +1,11 @@
|
|||
error: incorrect close delimiter: `)`
|
||||
--> $DIR/parser-recovery-2.rs:18:5
|
||||
|
|
||||
LL | ) //~ ERROR incorrect close delimiter: `)`
|
||||
| ^
|
||||
|
|
||||
note: unclosed delimiter
|
||||
--> $DIR/parser-recovery-2.rs:16:14
|
||||
|
|
||||
LL | fn bar() {
|
||||
| ^
|
||||
| - unclosed delimiter
|
||||
LL | let x = foo(); //~ ERROR cannot find function `foo` in this scope
|
||||
LL | ) //~ ERROR incorrect close delimiter: `)`
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error: unexpected token: `;`
|
||||
--> $DIR/parser-recovery-2.rs:22:15
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
error: incorrect close delimiter: `)`
|
||||
--> $DIR/token-error-correct-2.rs:16:5
|
||||
|
|
||||
LL | ) //~ ERROR: incorrect close delimiter: `)`
|
||||
| ^
|
||||
|
|
||||
note: unclosed delimiter
|
||||
--> $DIR/token-error-correct-2.rs:14:12
|
||||
|
|
||||
LL | if foo {
|
||||
| ^
|
||||
| - unclosed delimiter
|
||||
LL | //~^ ERROR: cannot find value `foo`
|
||||
LL | ) //~ ERROR: incorrect close delimiter: `)`
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error[E0425]: cannot find value `foo` in this scope
|
||||
--> $DIR/token-error-correct-2.rs:14:8
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
error: incorrect close delimiter: `}`
|
||||
--> $DIR/token-error-correct-3.rs:30:9
|
||||
|
|
||||
LL | } else { //~ ERROR: incorrect close delimiter: `}`
|
||||
| ^
|
||||
|
|
||||
note: unclosed delimiter
|
||||
--> $DIR/token-error-correct-3.rs:24:21
|
||||
|
|
||||
LL | callback(path.as_ref(); //~ ERROR expected one of
|
||||
| ^
|
||||
| - unclosed delimiter
|
||||
...
|
||||
LL | } else { //~ ERROR: incorrect close delimiter: `}`
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error: expected one of `)`, `,`, `.`, `?`, or an operator, found `;`
|
||||
--> $DIR/token-error-correct-3.rs:24:35
|
||||
|
|
|
@ -1,26 +1,20 @@
|
|||
error: incorrect close delimiter: `}`
|
||||
--> $DIR/token-error-correct.rs:16:1
|
||||
|
|
||||
LL | }
|
||||
| ^
|
||||
|
|
||||
note: unclosed delimiter
|
||||
--> $DIR/token-error-correct.rs:14:12
|
||||
|
|
||||
LL | foo(bar(;
|
||||
| ^
|
||||
| - unclosed delimiter
|
||||
LL | //~^ ERROR: expected expression, found `;`
|
||||
LL | }
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error: incorrect close delimiter: `}`
|
||||
--> $DIR/token-error-correct.rs:16:1
|
||||
|
|
||||
LL | }
|
||||
| ^
|
||||
|
|
||||
note: unclosed delimiter
|
||||
--> $DIR/token-error-correct.rs:14:8
|
||||
|
|
||||
LL | foo(bar(;
|
||||
| ^
|
||||
| - unclosed delimiter
|
||||
LL | //~^ ERROR: expected expression, found `;`
|
||||
LL | }
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error: expected expression, found `;`
|
||||
--> $DIR/token-error-correct.rs:14:13
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
error: incorrect close delimiter: `}`
|
||||
--> $DIR/issue-10636-2.rs:18:1
|
||||
|
|
||||
LL | } //~ ERROR: incorrect close delimiter
|
||||
| ^
|
||||
|
|
||||
note: unclosed delimiter
|
||||
--> $DIR/issue-10636-2.rs:15:15
|
||||
|
|
||||
LL | option.map(|some| 42;
|
||||
| ^
|
||||
| - unclosed delimiter
|
||||
...
|
||||
LL | } //~ ERROR: incorrect close delimiter
|
||||
| ^ incorrect close delimiter
|
||||
|
||||
error: expected one of `)`, `,`, `.`, `?`, or an operator, found `;`
|
||||
--> $DIR/issue-10636-2.rs:15:25
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue