Rollup merge of #100475 - chenyukang:fix-100461, r=fee1-dead
Give a helpful diagnostic when the next struct field has an attribute Fixes #100461
This commit is contained in:
commit
29f905bfaf
@ -1544,8 +1544,12 @@ impl<'a> Parser<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.token.is_ident() {
|
if self.token.is_ident()
|
||||||
// This is likely another field; emit the diagnostic and keep going
|
|| (self.token.kind == TokenKind::Pound
|
||||||
|
&& (self.look_ahead(1, |t| t == &token::OpenDelim(Delimiter::Bracket))))
|
||||||
|
{
|
||||||
|
// This is likely another field, TokenKind::Pound is used for `#[..]` attribute for next field,
|
||||||
|
// emit the diagnostic and keep going
|
||||||
err.span_suggestion(
|
err.span_suggestion(
|
||||||
sp,
|
sp,
|
||||||
"try adding a comma",
|
"try adding a comma",
|
||||||
|
18
src/test/ui/parser/struct-filed-with-attr.fixed
Normal file
18
src/test/ui/parser/struct-filed-with-attr.fixed
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Issue: 100461, Try to give a helpful diagnostic even when the next struct field has an attribute.
|
||||||
|
// run-rustfix
|
||||||
|
|
||||||
|
struct Feelings {
|
||||||
|
owo: bool,
|
||||||
|
//~^ ERROR expected `,`, or `}`, found `#`
|
||||||
|
#[allow(unused)]
|
||||||
|
uwu: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Feelings {
|
||||||
|
#[allow(unused)]
|
||||||
|
fn hmm(&self) -> bool {
|
||||||
|
self.owo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() { }
|
18
src/test/ui/parser/struct-filed-with-attr.rs
Normal file
18
src/test/ui/parser/struct-filed-with-attr.rs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Issue: 100461, Try to give a helpful diagnostic even when the next struct field has an attribute.
|
||||||
|
// run-rustfix
|
||||||
|
|
||||||
|
struct Feelings {
|
||||||
|
owo: bool
|
||||||
|
//~^ ERROR expected `,`, or `}`, found `#`
|
||||||
|
#[allow(unused)]
|
||||||
|
uwu: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Feelings {
|
||||||
|
#[allow(unused)]
|
||||||
|
fn hmm(&self) -> bool {
|
||||||
|
self.owo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() { }
|
8
src/test/ui/parser/struct-filed-with-attr.stderr
Normal file
8
src/test/ui/parser/struct-filed-with-attr.stderr
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
error: expected `,`, or `}`, found `#`
|
||||||
|
--> $DIR/struct-filed-with-attr.rs:5:14
|
||||||
|
|
|
||||||
|
LL | owo: bool
|
||||||
|
| ^ help: try adding a comma: `,`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user