about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-07-14 08:55:48 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-07-14 10:27:18 +0000
commit4e74c181a4f16adf72ff0f9adbf6faca8fe5d1df (patch)
tree911811512a580cbe5811417ad57277fed8aca9ee
parentdb71987ee1198be60fef3e361ad1ce59a70cd7f7 (diff)
downloadrust-4e74c181a4f16adf72ff0f9adbf6faca8fe5d1df.tar.gz
rust-4e74c181a4f16adf72ff0f9adbf6faca8fe5d1df.zip
Make `ext::base::expr_to_string` work correctly with `include!` macro invocations
-rw-r--r--src/libsyntax/ext/base.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs
index 92670cd9def..70d924cf46d 100644
--- a/src/libsyntax/ext/base.rs
+++ b/src/libsyntax/ext/base.rs
@@ -820,6 +820,12 @@ impl<'a> ExtCtxt<'a> {
 /// compilation on error, merely emits a non-fatal error and returns None.
 pub fn expr_to_string(cx: &mut ExtCtxt, expr: P<ast::Expr>, err_msg: &str)
                       -> Option<(InternedString, ast::StrStyle)> {
+    // Update `expr.span`'s expn_id now in case expr is an `include!` macro invocation.
+    let expr = expr.map(|mut expr| {
+        expr.span.expn_id = cx.backtrace;
+        expr
+    });
+
     // we want to be able to handle e.g. concat("foo", "bar")
     let expr = cx.expander().fold_expr(expr);
     match expr.node {