about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libsyntax/parse/parser.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 3cc16006b1b..a3dd77b8197 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -2162,13 +2162,13 @@ impl<'a> Parser<'a> {
                             &token::CloseDelim(delim),
                             seq_sep_none(),
                             |p| p.parse_token_tree()));
-                        let hi = self.span.hi;
+                        let hi = self.last_span.hi;
 
                         return Ok(self.mk_mac_expr(lo,
-                                                hi,
-                                                MacInvocTT(pth,
-                                                           tts,
-                                                           EMPTY_CTXT)));
+                                                   hi,
+                                                   MacInvocTT(pth,
+                                                              tts,
+                                                              EMPTY_CTXT)));
                     }
                     if self.check(&token::OpenDelim(token::Brace)) {
                         // This is a struct literal, unless we're prohibited
@@ -3449,7 +3449,7 @@ impl<'a> Parser<'a> {
                 seq_sep_none(),
                 |p| p.parse_token_tree()
             ));
-            let hi = self.span.hi;
+            let hi = self.last_span.hi;
 
             let style = if delim == token::Brace {
                 MacStmtWithBraces
@@ -3567,7 +3567,7 @@ impl<'a> Parser<'a> {
                         token::Semi => {
                             stmts.push(P(Spanned {
                                 node: StmtMac(mac, MacStmtWithSemicolon),
-                                span: span,
+                                span: mk_sp(span.lo, self.span.hi),
                             }));
                             try!(self.bump());
                         }
@@ -3591,7 +3591,7 @@ impl<'a> Parser<'a> {
                         token::Semi => {
                             stmts.push(P(Spanned {
                                 node: StmtMac(m, MacStmtWithSemicolon),
-                                span: span,
+                                span: mk_sp(span.lo, self.span.hi),
                             }));
                             try!(self.bump());
                         }
@@ -3610,13 +3610,15 @@ impl<'a> Parser<'a> {
                     }
                 }
                 _ => { // all other kinds of statements:
+                    let mut hi = span.hi;
                     if classify::stmt_ends_with_semi(&node) {
                         try!(self.commit_stmt_expecting(token::Semi));
+                        hi = self.last_span.hi;
                     }
 
                     stmts.push(P(Spanned {
                         node: node,
-                        span: span
+                        span: mk_sp(span.lo, hi)
                     }));
                 }
             }