Improve span handling in parse_expr_bottom
.
`parse_expr_bottom` stores `this.token.span` in `lo`, but then fails to use it in many places where it could. This commit fixes that, and likewise (to a smaller extent) in `parse_ty_common`.
This commit is contained in:
parent
6b6a867ae9
commit
90ad2adfea
3 changed files with 14 additions and 21 deletions
|
@ -1446,34 +1446,31 @@ impl<'a> Parser<'a> {
|
|||
this.parse_expr_closure()
|
||||
} else {
|
||||
assert!(this.eat_keyword(kw::For));
|
||||
this.parse_expr_for(None, this.prev_token.span)
|
||||
this.parse_expr_for(None, lo)
|
||||
}
|
||||
} else if this.eat_keyword(kw::While) {
|
||||
this.parse_expr_while(None, this.prev_token.span)
|
||||
this.parse_expr_while(None, lo)
|
||||
} else if let Some(label) = this.eat_label() {
|
||||
this.parse_expr_labeled(label, true)
|
||||
} else if this.eat_keyword(kw::Loop) {
|
||||
let sp = this.prev_token.span;
|
||||
this.parse_expr_loop(None, this.prev_token.span).map_err(|mut err| {
|
||||
err.span_label(sp, "while parsing this `loop` expression");
|
||||
this.parse_expr_loop(None, lo).map_err(|mut err| {
|
||||
err.span_label(lo, "while parsing this `loop` expression");
|
||||
err
|
||||
})
|
||||
} else if this.eat_keyword(kw::Match) {
|
||||
let match_sp = this.prev_token.span;
|
||||
this.parse_expr_match().map_err(|mut err| {
|
||||
err.span_label(match_sp, "while parsing this `match` expression");
|
||||
err.span_label(lo, "while parsing this `match` expression");
|
||||
err
|
||||
})
|
||||
} else if this.eat_keyword(kw::Unsafe) {
|
||||
let sp = this.prev_token.span;
|
||||
this.parse_expr_block(None, lo, BlockCheckMode::Unsafe(ast::UserProvided)).map_err(
|
||||
|mut err| {
|
||||
err.span_label(sp, "while parsing this `unsafe` expression");
|
||||
err.span_label(lo, "while parsing this `unsafe` expression");
|
||||
err
|
||||
},
|
||||
)
|
||||
} else if this.check_inline_const(0) {
|
||||
this.parse_const_block(lo.to(this.token.span), false)
|
||||
this.parse_const_block(lo, false)
|
||||
} else if this.may_recover() && this.is_do_catch_block() {
|
||||
this.recover_do_catch()
|
||||
} else if this.is_try_block() {
|
||||
|
@ -1514,7 +1511,7 @@ impl<'a> Parser<'a> {
|
|||
this.parse_expr_closure()
|
||||
}
|
||||
} else if this.eat_keyword_noexpect(kw::Await) {
|
||||
this.recover_incorrect_await_syntax(lo, this.prev_token.span)
|
||||
this.recover_incorrect_await_syntax(lo)
|
||||
} else {
|
||||
this.parse_expr_lit()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue