about summary refs log tree commit diff
path: root/src/librustc_parse/parser
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2020-01-31 14:23:12 +0100
committerMazdak Farrokhzad <twingoow@gmail.com>2020-02-13 15:16:36 +0100
commit46d3ef58a8a184b5a76098b2ac0e66792a6def25 (patch)
tree181132112556a98b0cd7b4c6ddc197d5bcfb783c /src/librustc_parse/parser
parent15e07a6a11bc5ed86e33403eb4b7d718d1636855 (diff)
downloadrust-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.rs30
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`.
     ///