about summary refs log tree commit diff
path: root/src/libsyntax/parse/common.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-09-11 19:26:48 -0700
committerBrian Anderson <banderson@mozilla.com>2012-09-11 19:26:48 -0700
commit3d2a74a160c5772efccda711e60c173077099ef2 (patch)
tree232a101ea013a8ead9633bd9a83c8a6e9c62798a /src/libsyntax/parse/common.rs
parentea01ee2e9e161a7028b98848c071e5fe9c30c7f7 (diff)
downloadrust-3d2a74a160c5772efccda711e60c173077099ef2.tar.gz
rust-3d2a74a160c5772efccda711e60c173077099ef2.zip
Reserve 'be' as a keyword
Diffstat (limited to 'src/libsyntax/parse/common.rs')
-rw-r--r--src/libsyntax/parse/common.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libsyntax/parse/common.rs b/src/libsyntax/parse/common.rs
index d71d95fd63f..a498b69527a 100644
--- a/src/libsyntax/parse/common.rs
+++ b/src/libsyntax/parse/common.rs
@@ -85,6 +85,7 @@ impl parser: parser_common {
 
     fn parse_ident() -> ast::ident {
         self.check_strict_keywords();
+        self.check_reserved_keywords();
         match copy self.token {
           token::IDENT(i, _) => { self.bump(); return i; }
           token::INTERPOLATED(token::nt_ident(*)) => { self.bug(
@@ -204,6 +205,26 @@ impl parser: parser_common {
         }
     }
 
+    fn is_reserved_keyword(word: ~str) -> bool {
+        self.reserved_keywords.contains_key_ref(&word)
+    }
+
+    fn check_reserved_keywords() {
+        match self.token {
+          token::IDENT(_, false) => {
+            let w = token_to_str(self.reader, self.token);
+            self.check_reserved_keywords_(w);
+          }
+          _ => ()
+        }
+    }
+
+    fn check_reserved_keywords_(w: ~str) {
+        if self.is_reserved_keyword(w) {
+            self.fatal(~"`" + w + ~"` is a reserved keyword");
+        }
+    }
+
     fn expect_gt() {
         if self.token == token::GT {
             self.bump();