summary refs log tree commit diff
path: root/src/libsyntax/ext/base.rs
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-12-06 11:01:58 -0800
committerGraydon Hoare <graydon@mozilla.com>2012-12-07 11:21:14 -0800
commitd45cb279012a56faaa39de305c1f8cd2098ecfb0 (patch)
treecb7303d2b29a63a48685c736e3f2ba60a66f65af /src/libsyntax/ext/base.rs
parent9f27bf7debcaa208f87ad045638070a4e2b226d9 (diff)
downloadrust-d45cb279012a56faaa39de305c1f8cd2098ecfb0.tar.gz
rust-d45cb279012a56faaa39de305c1f8cd2098ecfb0.zip
syntax: point quote tokens at the site of quote-using-extension invocation.
Diffstat (limited to 'src/libsyntax/ext/base.rs')
-rw-r--r--src/libsyntax/ext/base.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs
index 630ba3b8749..1f5b2b92f97 100644
--- a/src/libsyntax/ext/base.rs
+++ b/src/libsyntax/ext/base.rs
@@ -163,6 +163,7 @@ trait ext_ctxt {
     fn codemap() -> @CodeMap;
     fn parse_sess() -> parse::parse_sess;
     fn cfg() -> ast::crate_cfg;
+    fn call_site() -> span;
     fn print_backtrace();
     fn backtrace() -> Option<@ExpnInfo>;
     fn mod_push(mod_name: ast::ident);
@@ -195,6 +196,12 @@ fn mk_ctxt(parse_sess: parse::parse_sess,
         fn codemap() -> @CodeMap { self.parse_sess.cm }
         fn parse_sess() -> parse::parse_sess { self.parse_sess }
         fn cfg() -> ast::crate_cfg { self.cfg }
+        fn call_site() -> span {
+            match self.backtrace {
+                Some(@ExpandedFrom({call_site: cs, _})) => cs,
+                None => self.bug(~"missing top span")
+            }
+        }
         fn print_backtrace() { }
         fn backtrace() -> Option<@ExpnInfo> { self.backtrace }
         fn mod_push(i: ast::ident) { self.mod_path.push(i); }