mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
Rollup merge of #59116 - estebank:comma-sugg, r=petrochenkov
Be more discerning on when to attempt suggesting a comma in a macro invocation Fix #58796.
This commit is contained in:
commit
8ebe2acb7b
@ -178,9 +178,11 @@ impl TokenStream {
|
|||||||
while let Some((pos, ts)) = iter.next() {
|
while let Some((pos, ts)) = iter.next() {
|
||||||
if let Some((_, next)) = iter.peek() {
|
if let Some((_, next)) = iter.peek() {
|
||||||
let sp = match (&ts, &next) {
|
let sp = match (&ts, &next) {
|
||||||
((TokenTree::Token(_, token::Token::Comma), NonJoint), _) |
|
(_, (TokenTree::Token(_, token::Token::Comma), _)) => continue,
|
||||||
(_, (TokenTree::Token(_, token::Token::Comma), NonJoint)) => continue,
|
((TokenTree::Token(sp, token_left), NonJoint),
|
||||||
((TokenTree::Token(sp, _), NonJoint), _) => *sp,
|
(TokenTree::Token(_, token_right), _))
|
||||||
|
if (token_left.is_ident() || token_left.is_lit()) &&
|
||||||
|
(token_right.is_ident() || token_right.is_lit()) => *sp,
|
||||||
((TokenTree::Delimited(sp, ..), NonJoint), _) => sp.entire(),
|
((TokenTree::Delimited(sp, ..), NonJoint), _) => sp.entire(),
|
||||||
_ => continue,
|
_ => continue,
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,11 @@ macro_rules! foo {
|
|||||||
($a:ident, $b:ident, $c:ident, $d:ident, $e:ident) => ();
|
($a:ident, $b:ident, $c:ident, $d:ident, $e:ident) => ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! bar {
|
||||||
|
($lvl:expr, $($arg:tt)+) => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{}" a);
|
println!("{}" a);
|
||||||
//~^ ERROR expected token: `,`
|
//~^ ERROR expected token: `,`
|
||||||
@ -17,4 +22,6 @@ fn main() {
|
|||||||
//~^ ERROR no rules expected the token `d`
|
//~^ ERROR no rules expected the token `d`
|
||||||
foo!(a, b, c d e);
|
foo!(a, b, c d e);
|
||||||
//~^ ERROR no rules expected the token `d`
|
//~^ ERROR no rules expected the token `d`
|
||||||
|
bar!(Level::Error, );
|
||||||
|
//~^ ERROR unexpected end of macro invocation
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
error: expected token: `,`
|
error: expected token: `,`
|
||||||
--> $DIR/missing-comma.rs:10:19
|
--> $DIR/missing-comma.rs:15:19
|
||||||
|
|
|
|
||||||
LL | println!("{}" a);
|
LL | println!("{}" a);
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `b`
|
error: no rules expected the token `b`
|
||||||
--> $DIR/missing-comma.rs:12:12
|
--> $DIR/missing-comma.rs:17:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
| ---------------- when calling this macro
|
| ---------------- when calling this macro
|
||||||
@ -16,7 +16,7 @@ LL | foo!(a b);
|
|||||||
| help: missing comma here
|
| help: missing comma here
|
||||||
|
|
||||||
error: no rules expected the token `e`
|
error: no rules expected the token `e`
|
||||||
--> $DIR/missing-comma.rs:14:21
|
--> $DIR/missing-comma.rs:19:21
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
| ---------------- when calling this macro
|
| ---------------- when calling this macro
|
||||||
@ -27,7 +27,7 @@ LL | foo!(a, b, c, d e);
|
|||||||
| help: missing comma here
|
| help: missing comma here
|
||||||
|
|
||||||
error: no rules expected the token `d`
|
error: no rules expected the token `d`
|
||||||
--> $DIR/missing-comma.rs:16:18
|
--> $DIR/missing-comma.rs:21:18
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
| ---------------- when calling this macro
|
| ---------------- when calling this macro
|
||||||
@ -38,7 +38,7 @@ LL | foo!(a, b, c d, e);
|
|||||||
| help: missing comma here
|
| help: missing comma here
|
||||||
|
|
||||||
error: no rules expected the token `d`
|
error: no rules expected the token `d`
|
||||||
--> $DIR/missing-comma.rs:18:18
|
--> $DIR/missing-comma.rs:23:18
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
| ---------------- when calling this macro
|
| ---------------- when calling this macro
|
||||||
@ -46,5 +46,14 @@ LL | macro_rules! foo {
|
|||||||
LL | foo!(a, b, c d e);
|
LL | foo!(a, b, c d e);
|
||||||
| ^ no rules expected this token in macro call
|
| ^ no rules expected this token in macro call
|
||||||
|
|
||||||
error: aborting due to 5 previous errors
|
error: unexpected end of macro invocation
|
||||||
|
--> $DIR/missing-comma.rs:25:23
|
||||||
|
|
|
||||||
|
LL | macro_rules! bar {
|
||||||
|
| ---------------- when calling this macro
|
||||||
|
...
|
||||||
|
LL | bar!(Level::Error, );
|
||||||
|
| ^ missing tokens in macro arguments
|
||||||
|
|
||||||
|
error: aborting due to 6 previous errors
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user