diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-01-31 14:23:12 +0100 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-02-13 15:16:36 +0100 |
| commit | 46d3ef58a8a184b5a76098b2ac0e66792a6def25 (patch) | |
| tree | 181132112556a98b0cd7b4c6ddc197d5bcfb783c /src/librustc_parse/parser | |
| parent | 15e07a6a11bc5ed86e33403eb4b7d718d1636855 (diff) | |
| download | rust-46d3ef58a8a184b5a76098b2ac0e66792a6def25.tar.gz rust-46d3ef58a8a184b5a76098b2ac0e66792a6def25.zip | |
parser: extract `recover_const_mut`.
Diffstat (limited to 'src/librustc_parse/parser')
| -rw-r--r-- | src/librustc_parse/parser/item.rs | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/librustc_parse/parser/item.rs b/src/librustc_parse/parser/item.rs index 6de82d8f9be..f13898d7024 100644 --- a/src/librustc_parse/parser/item.rs +++ b/src/librustc_parse/parser/item.rs @@ -138,19 +138,7 @@ impl<'a> Parser<'a> { self.parse_item_const(Some(m))? } else if let Const::Yes(const_span) = self.parse_constness() { // CONST ITEM - if self.eat_keyword(kw::Mut) { - let prev_span = self.prev_span; - self.struct_span_err(prev_span, "const globals cannot be mutable") - .span_label(prev_span, "cannot be mutable") - .span_suggestion( - const_span, - "you might want to declare a static instead", - "static".to_owned(), - Applicability::MaybeIncorrect, - ) - .emit(); - } - + self.recover_const_mut(const_span); self.parse_item_const(None)? } else if self.check_keyword(kw::Trait) || self.check_auto_or_unsafe_trait_item() { // TRAIT ITEM @@ -987,6 +975,22 @@ impl<'a> Parser<'a> { } } + /// Recover on `const mut` with `const` already eaten. + fn recover_const_mut(&mut self, const_span: Span) { + if self.eat_keyword(kw::Mut) { + let span = self.prev_span; + self.struct_span_err(span, "const globals cannot be mutable") + .span_label(span, "cannot be mutable") + .span_suggestion( + const_span, + "you might want to declare a static instead", + "static".to_owned(), + Applicability::MaybeIncorrect, + ) + .emit(); + } + } + /// Parse `["const" | ("static" "mut"?)] $ident ":" $ty = $expr` with /// `["const" | ("static" "mut"?)]` already parsed and stored in `m`. /// |
