diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-05-15 13:45:58 +0100 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-05-15 13:45:58 +0100 |
commit | ec7d2f64ade9ffa35a64e82ac53e65ad5cbe9efd (patch) | |
tree | b8693ce808a9ca2e7eaae5013644a1082fc7bb17 /crates/ra_parser/src/parser.rs | |
parent | 64ab5ab10d32e7e8ec085af818d3d94211aea39b (diff) | |
parent | 993abedd77cf23ce2281b6c8e60cab49ab4fa97e (diff) |
Merge #1278
1278: Apply T! macro where posible r=matklad a=pasa
apply T! macro implemented in #1248
Co-authored-by: Sergey Parilin <[email protected]>
Diffstat (limited to 'crates/ra_parser/src/parser.rs')
-rw-r--r-- | crates/ra_parser/src/parser.rs | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/crates/ra_parser/src/parser.rs b/crates/ra_parser/src/parser.rs index 8eff930db..4434dfb09 100644 --- a/crates/ra_parser/src/parser.rs +++ b/crates/ra_parser/src/parser.rs | |||
@@ -6,6 +6,7 @@ use crate::{ | |||
6 | SyntaxKind::{self, ERROR, EOF, TOMBSTONE}, | 6 | SyntaxKind::{self, ERROR, EOF, TOMBSTONE}, |
7 | TokenSource, ParseError, TokenSet, | 7 | TokenSource, ParseError, TokenSet, |
8 | event::Event, | 8 | event::Event, |
9 | T | ||
9 | }; | 10 | }; |
10 | 11 | ||
11 | /// `Parser` struct provides the low-level API for | 12 | /// `Parser` struct provides the low-level API for |
@@ -155,10 +156,10 @@ impl<'t> Parser<'t> { | |||
155 | 156 | ||
156 | // Handle parser composites | 157 | // Handle parser composites |
157 | match kind { | 158 | match kind { |
158 | DOTDOTDOT | DOTDOTEQ => { | 159 | T![...] | T![..=] => { |
159 | self.bump_compound(kind, 3); | 160 | self.bump_compound(kind, 3); |
160 | } | 161 | } |
161 | DOTDOT | COLONCOLON | EQEQ | FAT_ARROW | NEQ | THIN_ARROW => { | 162 | T![..] | T![::] | T![==] | T![=>] | T![!=] | T![->] => { |
162 | self.bump_compound(kind, 2); | 163 | self.bump_compound(kind, 2); |
163 | } | 164 | } |
164 | _ => { | 165 | _ => { |
@@ -223,7 +224,7 @@ impl<'t> Parser<'t> { | |||
223 | 224 | ||
224 | /// Create an error node and consume the next token. | 225 | /// Create an error node and consume the next token. |
225 | pub(crate) fn err_recover(&mut self, message: &str, recovery: TokenSet) { | 226 | pub(crate) fn err_recover(&mut self, message: &str, recovery: TokenSet) { |
226 | if self.at(SyntaxKind::L_CURLY) || self.at(SyntaxKind::R_CURLY) || self.at_ts(recovery) { | 227 | if self.at(T!['{']) || self.at(T!['}']) || self.at_ts(recovery) { |
227 | self.error(message); | 228 | self.error(message); |
228 | } else { | 229 | } else { |
229 | let m = self.start(); | 230 | let m = self.start(); |
@@ -253,19 +254,17 @@ impl<'t> Parser<'t> { | |||
253 | let jn2 = self.token_source.is_token_joint_to_next(self.token_pos + n + 1); | 254 | let jn2 = self.token_source.is_token_joint_to_next(self.token_pos + n + 1); |
254 | let la3 = self.token_source.token_kind(self.token_pos + n + 2); | 255 | let la3 = self.token_source.token_kind(self.token_pos + n + 2); |
255 | 256 | ||
256 | use SyntaxKind::*; | ||
257 | |||
258 | match kind { | 257 | match kind { |
259 | DOT if jn1 && la2 == DOT && jn2 && la3 == DOT => Some((DOTDOTDOT, 3)), | 258 | T![.] if jn1 && la2 == T![.] && jn2 && la3 == T![.] => Some((T![...], 3)), |
260 | DOT if jn1 && la2 == DOT && la3 == EQ => Some((DOTDOTEQ, 3)), | 259 | T![.] if jn1 && la2 == T![.] && la3 == T![=] => Some((T![..=], 3)), |
261 | DOT if jn1 && la2 == DOT => Some((DOTDOT, 2)), | 260 | T![.] if jn1 && la2 == T![.] => Some((T![..], 2)), |
262 | 261 | ||
263 | COLON if jn1 && la2 == COLON => Some((COLONCOLON, 2)), | 262 | T![:] if jn1 && la2 == T![:] => Some((T![::], 2)), |
264 | EQ if jn1 && la2 == EQ => Some((EQEQ, 2)), | 263 | T![=] if jn1 && la2 == T![=] => Some((T![==], 2)), |
265 | EQ if jn1 && la2 == R_ANGLE => Some((FAT_ARROW, 2)), | 264 | T![=] if jn1 && la2 == T![>] => Some((T![=>], 2)), |
266 | 265 | ||
267 | EXCL if la2 == EQ => Some((NEQ, 2)), | 266 | T![!] if la2 == T![=] => Some((T![!=], 2)), |
268 | MINUS if la2 == R_ANGLE => Some((THIN_ARROW, 2)), | 267 | T![-] if la2 == T![>] => Some((T![->], 2)), |
269 | _ => None, | 268 | _ => None, |
270 | } | 269 | } |
271 | } | 270 | } |