diff options
| author | Deep Majumder <deep.majumder2019@gmail.com> | 2022-12-14 19:10:03 +0530 |
|---|---|---|
| committer | Deep Majumder <deep.majumder2019@gmail.com> | 2022-12-14 19:12:30 +0530 |
| commit | c4d0c911615a7b4efecca47abab294c7c1b788ce (patch) | |
| tree | b5df828aed87ffe039e7e4113c926848ff76eb8d /compiler/rustc_parse/src | |
| parent | 71ec1457ee9868a838e4521a3510cdd416c0c295 (diff) | |
| download | rust-c4d0c911615a7b4efecca47abab294c7c1b788ce.tar.gz rust-c4d0c911615a7b4efecca47abab294c7c1b788ce.zip | |
Allow .. to be parsed as let initializer
.. and ..= are valid expressions, however when used in a let statement it is not parsed.
Diffstat (limited to 'compiler/rustc_parse/src')
| -rw-r--r-- | compiler/rustc_parse/src/parser/expr.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index 8a3545eb3be..7235b15a46b 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -180,7 +180,7 @@ impl<'a> Parser<'a> { LhsExpr::AttributesParsed(attrs) => Some(attrs), _ => None, }; - if [token::DotDot, token::DotDotDot, token::DotDotEq].contains(&self.token.kind) { + if self.token.is_range_seperator() { return self.parse_prefix_range_expr(attrs); } else { self.parse_prefix_expr(attrs)? @@ -512,7 +512,7 @@ impl<'a> Parser<'a> { } debug_assert!( - [token::DotDot, token::DotDotDot, token::DotDotEq].contains(&self.token.kind), + self.token.is_range_seperator(), "parse_prefix_range_expr: token {:?} is not DotDot/DotDotEq", self.token ); @@ -896,7 +896,11 @@ impl<'a> Parser<'a> { let has_lifetime = self.token.is_lifetime() && self.look_ahead(1, |t| t != &token::Colon); let lifetime = has_lifetime.then(|| self.expect_lifetime()); // For recovery, see below. let (borrow_kind, mutbl) = self.parse_borrow_modifiers(lo); - let expr = self.parse_prefix_expr(None); + let expr = if self.token.is_range_seperator() { + self.parse_prefix_range_expr(None) + } else { + self.parse_prefix_expr(None) + }; let (hi, expr) = self.interpolated_or_expr_span(expr)?; let span = lo.to(hi); if let Some(lt) = lifetime { |
