about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-06-04 18:34:10 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-06-04 18:35:14 -0700
commitae6d8d1b4dc5a150e1aa62ba52cd534b15e45c1d (patch)
tree68630026a3a62aa5ede491b1831a8eedbd61e41e /src/libsyntax/parse
parent7803488a43eb24864105506b3825f605bc87d693 (diff)
downloadrust-ae6d8d1b4dc5a150e1aa62ba52cd534b15e45c1d.tar.gz
rust-ae6d8d1b4dc5a150e1aa62ba52cd534b15e45c1d.zip
rustc: Implement optional fat-arrow syntax for alt (transitional change)
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/lexer.rs7
-rw-r--r--src/libsyntax/parse/parser.rs1
-rw-r--r--src/libsyntax/parse/token.rs2
3 files changed, 9 insertions, 1 deletions
diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs
index bef5f6d1fd8..95831116258 100644
--- a/src/libsyntax/parse/lexer.rs
+++ b/src/libsyntax/parse/lexer.rs
@@ -389,7 +389,12 @@ fn next_token_inner(rdr: reader) -> token::token {
         if rdr.curr == '=' {
             rdr.bump();
             ret token::EQEQ;
-        } else { ret token::EQ; }
+        } else if rdr.curr == '>' {
+            rdr.bump();
+            ret token::FAT_ARROW;
+        } else {
+            ret token::EQ;
+        }
       }
       '!' {
         rdr.bump();
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index fdc46601d94..8b40e2a8a97 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -1281,6 +1281,7 @@ class parser {
             let pats = self.parse_pats();
             let mut guard = none;
             if self.eat_keyword("if") { guard = some(self.parse_expr()); }
+            if self.token == token::FAT_ARROW { self.bump(); }
             let blk = self.parse_block();
             arms += [{pats: pats, guard: guard, body: blk}];
         }
diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs
index 044509a5144..cb92aad04c7 100644
--- a/src/libsyntax/parse/token.rs
+++ b/src/libsyntax/parse/token.rs
@@ -45,6 +45,7 @@ enum token {
     RARROW,
     LARROW,
     DARROW,
+    FAT_ARROW,
     LPAREN,
     RPAREN,
     LBRACKET,
@@ -111,6 +112,7 @@ fn to_str(in: interner<str>, t: token) -> str {
       RARROW { ret "->"; }
       LARROW { ret "<-"; }
       DARROW { ret "<->"; }
+      FAT_ARROW { ret "=>"; }
       LPAREN { ret "("; }
       RPAREN { ret ")"; }
       LBRACKET { ret "["; }