From 7ac124803f696b7e28d9fdae2f676093024de378 Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Wed, 7 Sep 2022 03:59:47 +0900 Subject: do not suggest a semicolon for a macro without `!` --- compiler/rustc_parse/src/parser/expr.rs | 3 +++ src/test/ui/parser/do-not-suggest-semicolon-before-array.rs | 8 ++++++++ .../ui/parser/do-not-suggest-semicolon-before-array.stderr | 10 ++++++++++ ...olon-between-macro-without-exclamation-mark-and-array.rs | 3 +++ ...-between-macro-without-exclamation-mark-and-array.stderr | 8 ++++++++ .../parser/do-not-suggest-suggest-semicolon-before-array.rs | 8 -------- .../do-not-suggest-suggest-semicolon-before-array.stderr | 10 ---------- src/test/ui/parser/suggest-semicolon-before-array.fixed | 11 +++++++++++ src/test/ui/parser/suggest-semicolon-before-array.rs | 11 +++++++++++ src/test/ui/parser/suggest-semicolon-before-array.stderr | 13 +++++++++++++ .../ui/parser/suggest-suggest-semicolon-before-array.fixed | 11 ----------- .../ui/parser/suggest-suggest-semicolon-before-array.rs | 11 ----------- .../ui/parser/suggest-suggest-semicolon-before-array.stderr | 13 ------------- 13 files changed, 67 insertions(+), 53 deletions(-) create mode 100644 src/test/ui/parser/do-not-suggest-semicolon-before-array.rs create mode 100644 src/test/ui/parser/do-not-suggest-semicolon-before-array.stderr create mode 100644 src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs create mode 100644 src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr delete mode 100644 src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.rs delete mode 100644 src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.stderr create mode 100644 src/test/ui/parser/suggest-semicolon-before-array.fixed create mode 100644 src/test/ui/parser/suggest-semicolon-before-array.rs create mode 100644 src/test/ui/parser/suggest-semicolon-before-array.stderr delete mode 100644 src/test/ui/parser/suggest-suggest-semicolon-before-array.fixed delete mode 100644 src/test/ui/parser/suggest-suggest-semicolon-before-array.rs delete mode 100644 src/test/ui/parser/suggest-suggest-semicolon-before-array.stderr diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index d4828a20120..10cd353062e 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -1977,6 +1977,9 @@ impl<'a> Parser<'a> { open_delim_span: Span, ) -> PResult<'a, ()> { if self.token.kind == token::Comma { + if !self.sess.source_map().is_multiline(prev_span.until(self.token.span)) { + return Ok(()); + } let mut snapshot = self.create_snapshot_for_diagnostic(); snapshot.bump(); match snapshot.parse_seq_to_before_end( diff --git a/src/test/ui/parser/do-not-suggest-semicolon-before-array.rs b/src/test/ui/parser/do-not-suggest-semicolon-before-array.rs new file mode 100644 index 00000000000..7ebf3f6b0d8 --- /dev/null +++ b/src/test/ui/parser/do-not-suggest-semicolon-before-array.rs @@ -0,0 +1,8 @@ +fn foo() {} + +fn bar() -> [u8; 2] { + foo() + [1, 3) //~ ERROR expected one of `.`, `?`, `]`, or an operator, found `,` +} + +fn main() {} diff --git a/src/test/ui/parser/do-not-suggest-semicolon-before-array.stderr b/src/test/ui/parser/do-not-suggest-semicolon-before-array.stderr new file mode 100644 index 00000000000..a9dd526321f --- /dev/null +++ b/src/test/ui/parser/do-not-suggest-semicolon-before-array.stderr @@ -0,0 +1,10 @@ +error: expected one of `.`, `?`, `]`, or an operator, found `,` + --> $DIR/do-not-suggest-semicolon-before-array.rs:5:5 + | +LL | [1, 3) + | ^ ^ help: `]` may belong here + | | + | unclosed delimiter + +error: aborting due to previous error + diff --git a/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs b/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs new file mode 100644 index 00000000000..d6f7981813f --- /dev/null +++ b/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs @@ -0,0 +1,3 @@ +fn main() { + let _x = vec[1, 2, 3]; //~ ERROR expected one of `.`, `?`, `]`, or an operator +} diff --git a/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr b/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr new file mode 100644 index 00000000000..2fe6a28eeb4 --- /dev/null +++ b/src/test/ui/parser/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.stderr @@ -0,0 +1,8 @@ +error: expected one of `.`, `?`, `]`, or an operator, found `,` + --> $DIR/do-not-suggest-semicolon-between-macro-without-exclamation-mark-and-array.rs:2:19 + | +LL | let _x = vec[1, 2, 3]; + | ^ expected one of `.`, `?`, `]`, or an operator + +error: aborting due to previous error + diff --git a/src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.rs b/src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.rs deleted file mode 100644 index 7ebf3f6b0d8..00000000000 --- a/src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.rs +++ /dev/null @@ -1,8 +0,0 @@ -fn foo() {} - -fn bar() -> [u8; 2] { - foo() - [1, 3) //~ ERROR expected one of `.`, `?`, `]`, or an operator, found `,` -} - -fn main() {} diff --git a/src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.stderr b/src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.stderr deleted file mode 100644 index d6e8db80329..00000000000 --- a/src/test/ui/parser/do-not-suggest-suggest-semicolon-before-array.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: expected one of `.`, `?`, `]`, or an operator, found `,` - --> $DIR/do-not-suggest-suggest-semicolon-before-array.rs:5:5 - | -LL | [1, 3) - | ^ ^ help: `]` may belong here - | | - | unclosed delimiter - -error: aborting due to previous error - diff --git a/src/test/ui/parser/suggest-semicolon-before-array.fixed b/src/test/ui/parser/suggest-semicolon-before-array.fixed new file mode 100644 index 00000000000..a06b58b2740 --- /dev/null +++ b/src/test/ui/parser/suggest-semicolon-before-array.fixed @@ -0,0 +1,11 @@ +// run-rustfix +#![allow(dead_code)] + +fn foo() {} + +fn bar() -> [u8; 2] { + foo(); + [1, 3] //~ ERROR expected `;`, found `[` +} + +fn main() {} diff --git a/src/test/ui/parser/suggest-semicolon-before-array.rs b/src/test/ui/parser/suggest-semicolon-before-array.rs new file mode 100644 index 00000000000..f601ca2aef5 --- /dev/null +++ b/src/test/ui/parser/suggest-semicolon-before-array.rs @@ -0,0 +1,11 @@ +// run-rustfix +#![allow(dead_code)] + +fn foo() {} + +fn bar() -> [u8; 2] { + foo() + [1, 3] //~ ERROR expected `;`, found `[` +} + +fn main() {} diff --git a/src/test/ui/parser/suggest-semicolon-before-array.stderr b/src/test/ui/parser/suggest-semicolon-before-array.stderr new file mode 100644 index 00000000000..8a33321fbd5 --- /dev/null +++ b/src/test/ui/parser/suggest-semicolon-before-array.stderr @@ -0,0 +1,13 @@ +error: expected `;`, found `[` + --> $DIR/suggest-semicolon-before-array.rs:8:5 + | +LL | [1, 3] + | ^ + | +help: consider adding `;` here + | +LL | foo(); + | + + +error: aborting due to previous error + diff --git a/src/test/ui/parser/suggest-suggest-semicolon-before-array.fixed b/src/test/ui/parser/suggest-suggest-semicolon-before-array.fixed deleted file mode 100644 index a06b58b2740..00000000000 --- a/src/test/ui/parser/suggest-suggest-semicolon-before-array.fixed +++ /dev/null @@ -1,11 +0,0 @@ -// run-rustfix -#![allow(dead_code)] - -fn foo() {} - -fn bar() -> [u8; 2] { - foo(); - [1, 3] //~ ERROR expected `;`, found `[` -} - -fn main() {} diff --git a/src/test/ui/parser/suggest-suggest-semicolon-before-array.rs b/src/test/ui/parser/suggest-suggest-semicolon-before-array.rs deleted file mode 100644 index f601ca2aef5..00000000000 --- a/src/test/ui/parser/suggest-suggest-semicolon-before-array.rs +++ /dev/null @@ -1,11 +0,0 @@ -// run-rustfix -#![allow(dead_code)] - -fn foo() {} - -fn bar() -> [u8; 2] { - foo() - [1, 3] //~ ERROR expected `;`, found `[` -} - -fn main() {} diff --git a/src/test/ui/parser/suggest-suggest-semicolon-before-array.stderr b/src/test/ui/parser/suggest-suggest-semicolon-before-array.stderr deleted file mode 100644 index bf86b43554d..00000000000 --- a/src/test/ui/parser/suggest-suggest-semicolon-before-array.stderr +++ /dev/null @@ -1,13 +0,0 @@ -error: expected `;`, found `[` - --> $DIR/suggest-suggest-semicolon-before-array.rs:8:5 - | -LL | [1, 3] - | ^ - | -help: consider adding `;` here - | -LL | foo(); - | + - -error: aborting due to previous error - -- cgit 1.4.1-3-g733a5