about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-06-20 09:53:12 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-06-20 09:53:12 -0700
commitf0c730b819939f691076fec85319a6d11fa7b67d (patch)
treeee39ae1eaeb4a035ff8b04e0359cdcf7447fce2f /src/libsyntax/parse
parent6750eb5a05042fe3fb84708909074f33ad86d3ec (diff)
downloadrust-f0c730b819939f691076fec85319a6d11fa7b67d.tar.gz
rust-f0c730b819939f691076fec85319a6d11fa7b67d.zip
syntax: Parse GT tokens from `>=` and `>>=`
The parser already has special logic for parsing `>` tokens from `>>`, and this
commit extends the logic to the acquiring a `>` from the `>=` and `>>=` tokens
as well.

Closes #15043
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index ae2ec216bee..b56919c53c7 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -706,6 +706,16 @@ impl<'a> Parser<'a> {
                 let lo = span.lo + BytePos(1);
                 self.replace_token(token::GT, lo, span.hi)
             }
+            token::BINOPEQ(token::SHR) => {
+                let span = self.span;
+                let lo = span.lo + BytePos(1);
+                self.replace_token(token::GE, lo, span.hi)
+            }
+            token::GE => {
+                let span = self.span;
+                let lo = span.lo + BytePos(1);
+                self.replace_token(token::EQ, lo, span.hi)
+            }
             _ => {
                 let gt_str = Parser::token_to_str(&token::GT);
                 let this_token_str = self.this_token_to_str();
@@ -726,7 +736,9 @@ impl<'a> Parser<'a> {
         let mut first = true;
         let mut v = Vec::new();
         while self.token != token::GT
-            && self.token != token::BINOP(token::SHR) {
+            && self.token != token::BINOP(token::SHR)
+            && self.token != token::GE
+            && self.token != token::BINOPEQ(token::SHR) {
             match sep {
               Some(ref t) => {
                 if first { first = false; }