about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-11-29 06:00:05 +0000
committerbors <bors@rust-lang.org>2015-11-29 06:00:05 +0000
commit323781cdf700172a9b8fedf0614a995d4a4d81c0 (patch)
tree7ac9496b19f298ed4807f1ab04600650035e5957
parent7499558dd0a64b3485f2d1b3c7df05616893673d (diff)
parent920120ed4ce2389b0db5cdabb3eb60535da5836d (diff)
downloadrust-323781cdf700172a9b8fedf0614a995d4a4d81c0.tar.gz
rust-323781cdf700172a9b8fedf0614a995d4a4d81c0.zip
Auto merge of #30075 - kyeah:mac-span, r=sanxiyn
Fixes #28424 (item macros), #30067 (impl item macros), and pattern macros.
-rw-r--r--src/libsyntax/parse/parser.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 56a06f70ed4..ce65f99e2f0 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3253,7 +3253,8 @@ impl<'a> Parser<'a> {
                         let tts = try!(self.parse_seq_to_end(&token::CloseDelim(delim),
                                 seq_sep_none(), |p| p.parse_token_tree()));
                         let mac = Mac_ { path: path, tts: tts, ctxt: EMPTY_CTXT };
-                        pat = PatMac(codemap::Spanned {node: mac, span: self.span});
+                        pat = PatMac(codemap::Spanned {node: mac,
+                                                       span: mk_sp(lo, self.last_span.hi)});
                     } else {
                         // Parse ident @ pat
                         // This can give false positives and parse nullary enums,
@@ -4475,6 +4476,7 @@ impl<'a> Parser<'a> {
             let last_span = self.last_span;
             self.complain_if_pub_macro(vis, last_span);
 
+            let lo = self.span.lo;
             let pth = try!(self.parse_path(NoTypesAllowed));
             try!(self.expect(&token::Not));
 
@@ -4485,8 +4487,8 @@ impl<'a> Parser<'a> {
                                             |p| p.parse_token_tree()));
             let m_ = Mac_ { path: pth, tts: tts, ctxt: EMPTY_CTXT };
             let m: ast::Mac = codemap::Spanned { node: m_,
-                                                span: mk_sp(self.span.lo,
-                                                            self.span.hi) };
+                                                span: mk_sp(lo,
+                                                            self.last_span.hi) };
             if delim != token::Brace {
                 try!(self.expect(&token::Semi))
             }
@@ -5513,6 +5515,8 @@ impl<'a> Parser<'a> {
             let last_span = self.last_span;
             self.complain_if_pub_macro(visibility, last_span);
 
+            let mac_lo = self.span.lo;
+
             // item macro.
             let pth = try!(self.parse_path(NoTypesAllowed));
             try!(self.expect(&token::Not));
@@ -5533,8 +5537,8 @@ impl<'a> Parser<'a> {
             // single-variant-enum... :
             let m = Mac_ { path: pth, tts: tts, ctxt: EMPTY_CTXT };
             let m: ast::Mac = codemap::Spanned { node: m,
-                                             span: mk_sp(self.span.lo,
-                                                         self.span.hi) };
+                                             span: mk_sp(mac_lo,
+                                                         self.last_span.hi) };
 
             if delim != token::Brace {
                 if !try!(self.eat(&token::Semi) ){