diff options
| author | bors <bors@rust-lang.org> | 2015-05-16 00:32:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-05-16 00:32:35 +0000 |
| commit | 7a52835c1a6da00dd054c2e934a70a0c231dffd1 (patch) | |
| tree | 60dda410440d24d7fb162bd6037ad979bda11603 /src/libsyntax/parse/parser.rs | |
| parent | daaf71553929a63d619d2a7337588fed1baf6bfe (diff) | |
| parent | 5a1b336a01608081b5755909b2f3c97e460362a2 (diff) | |
| download | rust-7a52835c1a6da00dd054c2e934a70a0c231dffd1.tar.gz rust-7a52835c1a6da00dd054c2e934a70a0c231dffd1.zip | |
Auto merge of #25466 - P1start:move-closure-span, r=alexcrichton
Closes #24986.
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 9bf6fa88ba5..165ce7b122b 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -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(_) => { |
