about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorMasaki Hara <ackie.h.gmai@gmail.com>2017-05-31 23:22:33 +0900
committerMasaki Hara <ackie.h.gmai@gmail.com>2017-05-31 23:22:33 +0900
commitb670930933fd8af2316364d4e15e6a22983cf78d (patch)
tree763aba314b92b6bf0f688d51d3ca9da8d36fa04d /src/libsyntax/parse
parent54edfee71a7d2a8f710c578be75c0537a430eaaf (diff)
downloadrust-b670930933fd8af2316364d4e15e6a22983cf78d.tar.gz
rust-b670930933fd8af2316364d4e15e6a22983cf78d.zip
Emit proper expectation for the "default" keyword.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 63fe33b8754..936a2e8b2e1 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3749,6 +3749,16 @@ impl<'a> Parser<'a> {
                         t.is_keyword(keywords::Pub))
     }
 
+    fn eat_defaultness(&mut self) -> bool {
+        let is_defaultness = self.is_defaultness();
+        if is_defaultness {
+            self.bump()
+        } else {
+            self.expected_tokens.push(TokenType::Keyword(keywords::Default));
+        }
+        is_defaultness
+    }
+
     fn eat_macro_def(&mut self, attrs: &[Attribute], vis: &Visibility)
                      -> PResult<'a, Option<P<Item>>> {
         let lo = self.span;
@@ -5223,8 +5233,7 @@ impl<'a> Parser<'a> {
 
     /// Parse defaultness: DEFAULT or nothing
     fn parse_defaultness(&mut self) -> PResult<'a, Defaultness> {
-        if self.is_defaultness() {
-            self.bump();
+        if self.eat_defaultness() {
             Ok(Defaultness::Default)
         } else {
             Ok(Defaultness::Final)