diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-06-04 18:34:10 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-06-04 18:35:14 -0700 |
| commit | ae6d8d1b4dc5a150e1aa62ba52cd534b15e45c1d (patch) | |
| tree | 68630026a3a62aa5ede491b1831a8eedbd61e41e /src/libsyntax/parse | |
| parent | 7803488a43eb24864105506b3825f605bc87d693 (diff) | |
| download | rust-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.rs | 7 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 2 |
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 "["; } |
