Skip to content

Commit

Permalink
Rollup merge of #108298 - TaKO8Ki:fix-104440, r=cjgillot
Browse files Browse the repository at this point in the history
Fix ICE: check if snippet is `)`

Fixes #107705
  • Loading branch information
Dylan-DPC committed Mar 4, 2023
2 parents 0fbfc3e + 871ee18 commit 035aa28
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
9 changes: 7 additions & 2 deletions compiler/rustc_parse/src/parser/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1210,8 +1210,13 @@ impl<'a> Parser<'a> {
// `Enum::Foo { a: 3, b: 4 }` or `Enum::Foo(3, 4)`.
self.restore_snapshot(snapshot);
let close_paren = self.prev_token.span;
let span = lo.to(self.prev_token.span);
if !fields.is_empty() {
let span = lo.to(close_paren);
if !fields.is_empty() &&
// `token.kind` should not be compared here.
// This is because the `snapshot.token.kind` is treated as the same as
// that of the open delim in `TokenTreesReader::parse_token_tree`, even if they are different.
self.span_to_snippet(close_paren).map_or(false, |snippet| snippet == ")")
{
let mut replacement_err = errors::ParenthesesWithStructFields {
span,
r#type: path,
Expand Down
3 changes: 3 additions & 0 deletions tests/ui/parser/issue-107705.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// compile-flags: -C debug-assertions

fn f() {a(b:&, //~ ERROR this file contains an unclosed delimiter
10 changes: 10 additions & 0 deletions tests/ui/parser/issue-107705.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
error: this file contains an unclosed delimiter
--> $DIR/issue-107705.rs:3:67
|
LL | fn f() {a(b:&,
| - - unclosed delimiter ^
| |
| unclosed delimiter

error: aborting due to previous error

0 comments on commit 035aa28

Please sign in to comment.