1
Fork 0

Fix the spans of move closures

Closes #24986.
This commit is contained in:
P1start 2015-05-16 11:24:06 +12:00
parent 716f920b7e
commit 5a1b336a01
2 changed files with 22 additions and 4 deletions

View file

@ -2026,7 +2026,8 @@ impl<'a> Parser<'a> {
return self.parse_block_expr(lo, DefaultBlock);
},
token::BinOp(token::Or) | token::OrOr => {
return self.parse_lambda_expr(CaptureByRef);
let lo = self.span.lo;
return self.parse_lambda_expr(lo, CaptureByRef);
},
token::Ident(id @ ast::Ident {
name: token::SELF_KEYWORD_NAME,
@ -2081,7 +2082,8 @@ impl<'a> Parser<'a> {
return Ok(self.mk_expr(lo, hi, ExprPath(Some(qself), path)));
}
if try!(self.eat_keyword(keywords::Move) ){
return self.parse_lambda_expr(CaptureByValue);
let lo = self.last_span.lo;
return self.parse_lambda_expr(lo, CaptureByValue);
}
if try!(self.eat_keyword(keywords::If)) {
return self.parse_if_expr();
@ -2840,10 +2842,9 @@ impl<'a> Parser<'a> {
}
// `|args| expr`
pub fn parse_lambda_expr(&mut self, capture_clause: CaptureClause)
pub fn parse_lambda_expr(&mut self, lo: BytePos, capture_clause: CaptureClause)
-> PResult<P<Expr>>
{
let lo = self.span.lo;
let decl = try!(self.parse_fn_block_decl());
let body = match decl.output {
DefaultReturn(_) => {