From 749907d330e5487eb7997479e2aba4ac2c2e3494 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 8 Sep 2018 10:38:53 +0300 Subject: simplify --- crates/libsyntax2/src/grammar/expressions/atom.rs | 10 +++++----- crates/libsyntax2/src/grammar/expressions/mod.rs | 4 ++-- crates/libsyntax2/src/grammar/params.rs | 2 +- crates/libsyntax2/src/grammar/patterns.rs | 2 +- crates/libsyntax2/src/parser_api.rs | 5 +++++ 5 files changed, 14 insertions(+), 9 deletions(-) (limited to 'crates/libsyntax2/src') diff --git a/crates/libsyntax2/src/grammar/expressions/atom.rs b/crates/libsyntax2/src/grammar/expressions/atom.rs index 1488e12a4..fdb4718ba 100644 --- a/crates/libsyntax2/src/grammar/expressions/atom.rs +++ b/crates/libsyntax2/src/grammar/expressions/atom.rs @@ -18,7 +18,7 @@ pub(crate) const LITERAL_FIRST: TokenSet = STRING, RAW_STRING, BYTE_STRING, RAW_BYTE_STRING]; pub(crate) fn literal(p: &mut Parser) -> Option { - if !LITERAL_FIRST.contains(p.current()) { + if !p.at_ts(LITERAL_FIRST) { return None; } let m = p.start(); @@ -108,7 +108,7 @@ fn tuple_expr(p: &mut Parser) -> CompletedMarker { let mut saw_expr = false; while !p.at(EOF) && !p.at(R_PAREN) { saw_expr = true; - if !EXPR_FIRST.contains(p.current()) { + if !p.at_ts(EXPR_FIRST) { p.error("expected expression"); break; } @@ -147,7 +147,7 @@ fn array_expr(p: &mut Parser) -> CompletedMarker { if p.at(R_BRACK) { break; } - if !EXPR_FIRST.contains(p.current()) { + if !p.at_ts(EXPR_FIRST) { p.error("expected expression"); break; } @@ -360,7 +360,7 @@ fn return_expr(p: &mut Parser) -> CompletedMarker { assert!(p.at(RETURN_KW)); let m = p.start(); p.bump(); - if EXPR_FIRST.contains(p.current()) { + if p.at_ts(EXPR_FIRST) { expr(p); } m.complete(p, RETURN_EXPR) @@ -395,7 +395,7 @@ fn break_expr(p: &mut Parser) -> CompletedMarker { let m = p.start(); p.bump(); p.eat(LIFETIME); - if EXPR_FIRST.contains(p.current()) { + if p.at_ts(EXPR_FIRST) { expr(p); } m.complete(p, BREAK_EXPR) diff --git a/crates/libsyntax2/src/grammar/expressions/mod.rs b/crates/libsyntax2/src/grammar/expressions/mod.rs index f7b9f7086..d5ee91ad8 100644 --- a/crates/libsyntax2/src/grammar/expressions/mod.rs +++ b/crates/libsyntax2/src/grammar/expressions/mod.rs @@ -236,7 +236,7 @@ fn lhs(p: &mut Parser, r: Restrictions) -> Option { DOTDOT => { m = p.start(); p.bump(); - if EXPR_FIRST.contains(p.current()) { + if p.at_ts(EXPR_FIRST) { expr_bp(p, r, 2); } return Some(m.complete(p, RANGE_EXPR)); @@ -376,7 +376,7 @@ fn arg_list(p: &mut Parser) { let m = p.start(); p.bump(); while !p.at(R_PAREN) && !p.at(EOF) { - if !EXPR_FIRST.contains(p.current()) { + if !p.at_ts(EXPR_FIRST) { p.error("expected expression"); break; } diff --git a/crates/libsyntax2/src/grammar/params.rs b/crates/libsyntax2/src/grammar/params.rs index bc0cb44ba..903c25939 100644 --- a/crates/libsyntax2/src/grammar/params.rs +++ b/crates/libsyntax2/src/grammar/params.rs @@ -48,7 +48,7 @@ fn list_(p: &mut Parser, flavor: Flavor) { opt_self_param(p); } while !p.at(EOF) && !p.at(ket) { - if !VALUE_PARAMETER_FIRST.contains(p.current()) { + if !p.at_ts(VALUE_PARAMETER_FIRST) { p.error("expected value parameter"); break; } diff --git a/crates/libsyntax2/src/grammar/patterns.rs b/crates/libsyntax2/src/grammar/patterns.rs index aa20ae8e4..6dd3ab2fa 100644 --- a/crates/libsyntax2/src/grammar/patterns.rs +++ b/crates/libsyntax2/src/grammar/patterns.rs @@ -102,7 +102,7 @@ fn tuple_pat_fields(p: &mut Parser) { match p.current() { DOTDOT => p.bump(), _ => { - if !PATTERN_FIRST.contains(p.current()) { + if !p.at_ts(PATTERN_FIRST) { p.error("expected a pattern"); break; } diff --git a/crates/libsyntax2/src/parser_api.rs b/crates/libsyntax2/src/parser_api.rs index c4753140e..7d97159dd 100644 --- a/crates/libsyntax2/src/parser_api.rs +++ b/crates/libsyntax2/src/parser_api.rs @@ -35,6 +35,11 @@ impl<'t> Parser<'t> { self.current() == kind } + /// Checks if the current token is `kind`. + pub(crate) fn at_ts(&self, kinds: TokenSet) -> bool { + kinds.contains(self.current()) + } + pub(crate) fn next2(&self) -> Option<(SyntaxKind, SyntaxKind)> { self.0.next2() } -- cgit v1.2.3