Skip to content

Commit

Permalink
let is not allowed in struct field definitions
Browse files Browse the repository at this point in the history
Co-authored-by: jyn514 <jyn514@gmail.com>
Co-authored-by: Esteban Kuber <estebank@users.noreply.github.com>
  • Loading branch information
3 people committed Oct 10, 2022
1 parent ab37a83 commit 6071b4b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
18 changes: 17 additions & 1 deletion compiler/rustc_parse/src/parser/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1788,7 +1788,23 @@ impl<'a> Parser<'a> {
}
}
} else {
self.expected_ident_found()
let mut err = self.expected_ident_found();
if let Some((ident, _)) = self.token.ident() && ident.as_str() == "let" {
self.bump(); // `let`
let span = self.prev_token.span.until(self.token.span);
err.span_suggestion(
span,
"remove the let, the `let` keyword is not allowed in struct field definitions",
String::new(),
Applicability::MachineApplicable,
);
err.note("the `let` keyword is not allowed in `struct` fields");
err.note("see <https://doc.rust-lang.org/book/ch05-01-defining-structs.html> for more information");
err.emit();
self.bump();
return Ok(ident);
}
err
};
return Err(err);
}
Expand Down
10 changes: 8 additions & 2 deletions src/test/ui/parser/removed-syntax-field-let.stderr
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
error: expected identifier, found keyword `let`
--> $DIR/removed-syntax-field-let.rs:2:5
|
LL | struct S {
| - while parsing this struct
LL | let foo: (),
| ^^^ expected identifier, found keyword
|
= note: the `let` keyword is not allowed in `struct` fields
= note: see <https://doc.rust-lang.org/book/ch05-01-defining-structs.html> for more information
help: remove the let, the `let` keyword is not allowed in struct field definitions
|
LL - let foo: (),
LL + foo: (),
|

error: aborting due to previous error

0 comments on commit 6071b4b

Please sign in to comment.