mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 11:07:42 +00:00
Accept ranges with only a maximum value: ..expr
This commit is contained in:
parent
d45b5d2ed9
commit
57a74eda88
@ -2146,14 +2146,14 @@ impl<'a> Parser<'a> {
|
|||||||
(&None, &Some(ref e)) => (e.span.lo, e.span.hi),
|
(&None, &Some(ref e)) => (e.span.lo, e.span.hi),
|
||||||
(&None, &None) => (DUMMY_SP.lo, DUMMY_SP.hi),
|
(&None, &None) => (DUMMY_SP.lo, DUMMY_SP.hi),
|
||||||
};
|
};
|
||||||
ExprIndex(expr, self.mk_expr(lo, hi, ExprRange(start, end)))
|
ExprIndex(expr, self.mk_expr(lo, hi, self.mk_range(start, end)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mk_range(&mut self,
|
pub fn mk_range(&mut self,
|
||||||
start: P<Expr>,
|
start: Option<P<Expr>>,
|
||||||
end: Option<P<Expr>>)
|
end: Option<P<Expr>>)
|
||||||
-> ast::Expr_ {
|
-> ast::Expr_ {
|
||||||
ExprRange(Some(start), end)
|
ExprRange(start, end)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mk_field(&mut self, expr: P<Expr>, ident: ast::SpannedIdent) -> ast::Expr_ {
|
pub fn mk_field(&mut self, expr: P<Expr>, ident: ast::SpannedIdent) -> ast::Expr_ {
|
||||||
@ -2676,7 +2676,7 @@ impl<'a> Parser<'a> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let hi = self.span.hi;
|
let hi = self.span.hi;
|
||||||
let range = self.mk_range(e, opt_end);
|
let range = self.mk_range(Some(e), opt_end);
|
||||||
return self.mk_expr(lo, hi, range);
|
return self.mk_expr(lo, hi, range);
|
||||||
}
|
}
|
||||||
_ => return e
|
_ => return e
|
||||||
@ -2889,6 +2889,13 @@ impl<'a> Parser<'a> {
|
|||||||
hi = e.span.hi;
|
hi = e.span.hi;
|
||||||
ex = self.mk_unary(UnUniq, e);
|
ex = self.mk_unary(UnUniq, e);
|
||||||
}
|
}
|
||||||
|
token::DotDot if !self.restrictions.contains(RESTRICTION_NO_DOTS) => {
|
||||||
|
// A range, closed above: `..expr`.
|
||||||
|
self.bump();
|
||||||
|
let e = self.parse_prefix_expr();
|
||||||
|
hi = e.span.hi;
|
||||||
|
ex = self.mk_range(None, Some(e));
|
||||||
|
}
|
||||||
token::Ident(_, _) => {
|
token::Ident(_, _) => {
|
||||||
if !self.token.is_keyword(keywords::Box) {
|
if !self.token.is_keyword(keywords::Box) {
|
||||||
return self.parse_dot_or_call_expr();
|
return self.parse_dot_or_call_expr();
|
||||||
|
Loading…
Reference in New Issue
Block a user