Auto merge of #27203 - marcusklaas:fix-range-span, r=alexcrichton
Right trims the span for certain range expressions. Closes https://github.com/rust-lang/rust/issues/27162.
This commit is contained in:
commit
2e5b165e18
1 changed files with 5 additions and 4 deletions
|
@ -2738,14 +2738,15 @@ impl<'a> Parser<'a> {
|
||||||
// (much lower than other prefix expressions) to be consistent
|
// (much lower than other prefix expressions) to be consistent
|
||||||
// with the postfix-form 'expr..'
|
// with the postfix-form 'expr..'
|
||||||
let lo = self.span.lo;
|
let lo = self.span.lo;
|
||||||
|
let mut hi = self.span.hi;
|
||||||
try!(self.bump());
|
try!(self.bump());
|
||||||
let opt_end = if self.is_at_start_of_range_notation_rhs() {
|
let opt_end = if self.is_at_start_of_range_notation_rhs() {
|
||||||
let end = try!(self.parse_binops());
|
let end = try!(self.parse_binops());
|
||||||
|
hi = end.span.hi;
|
||||||
Some(end)
|
Some(end)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let hi = self.span.hi;
|
|
||||||
let ex = self.mk_range(None, opt_end);
|
let ex = self.mk_range(None, opt_end);
|
||||||
Ok(self.mk_expr(lo, hi, ex))
|
Ok(self.mk_expr(lo, hi, ex))
|
||||||
}
|
}
|
||||||
|
@ -2787,17 +2788,17 @@ impl<'a> Parser<'a> {
|
||||||
}
|
}
|
||||||
// A range expression, either `expr..expr` or `expr..`.
|
// A range expression, either `expr..expr` or `expr..`.
|
||||||
token::DotDot => {
|
token::DotDot => {
|
||||||
|
let lo = lhs.span.lo;
|
||||||
|
let mut hi = self.span.hi;
|
||||||
try!(self.bump());
|
try!(self.bump());
|
||||||
|
|
||||||
let opt_end = if self.is_at_start_of_range_notation_rhs() {
|
let opt_end = if self.is_at_start_of_range_notation_rhs() {
|
||||||
let end = try!(self.parse_binops());
|
let end = try!(self.parse_binops());
|
||||||
|
hi = end.span.hi;
|
||||||
Some(end)
|
Some(end)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
let lo = lhs.span.lo;
|
|
||||||
let hi = self.span.hi;
|
|
||||||
let range = self.mk_range(Some(lhs), opt_end);
|
let range = self.mk_range(Some(lhs), opt_end);
|
||||||
return Ok(self.mk_expr(lo, hi, range));
|
return Ok(self.mk_expr(lo, hi, range));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue