about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libsyntax/ext/source_util.rs3
-rw-r--r--src/test/compile-fail/macro-expanded-include/file.txt0
-rw-r--r--src/test/compile-fail/macro-expanded-include/foo/mod.rs15
-rw-r--r--src/test/compile-fail/macro-expanded-include/test.rs19
4 files changed, 36 insertions, 1 deletions
diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs
index fd229d77966..d297188a35c 100644
--- a/src/libsyntax/ext/source_util.rs
+++ b/src/libsyntax/ext/source_util.rs
@@ -197,7 +197,8 @@ pub fn expand_include_bytes(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree])
 fn res_rel_file(cx: &mut ExtCtxt, sp: codemap::Span, arg: &Path) -> PathBuf {
     // NB: relative paths are resolved relative to the compilation unit
     if !arg.is_absolute() {
-        let mut cu = PathBuf::from(&cx.codemap().span_to_filename(sp));
+        let callsite = cx.codemap().source_callsite(sp);
+        let mut cu = PathBuf::from(&cx.codemap().span_to_filename(callsite));
         cu.pop();
         cu.push(arg);
         cu
diff --git a/src/test/compile-fail/macro-expanded-include/file.txt b/src/test/compile-fail/macro-expanded-include/file.txt
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/src/test/compile-fail/macro-expanded-include/file.txt
diff --git a/src/test/compile-fail/macro-expanded-include/foo/mod.rs b/src/test/compile-fail/macro-expanded-include/foo/mod.rs
new file mode 100644
index 00000000000..57b7b72a1d4
--- /dev/null
+++ b/src/test/compile-fail/macro-expanded-include/foo/mod.rs
@@ -0,0 +1,15 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// ignore-test
+
+macro_rules! m {
+    () => { include!("file.txt"); }
+}
diff --git a/src/test/compile-fail/macro-expanded-include/test.rs b/src/test/compile-fail/macro-expanded-include/test.rs
new file mode 100644
index 00000000000..7ab9dd19b1b
--- /dev/null
+++ b/src/test/compile-fail/macro-expanded-include/test.rs
@@ -0,0 +1,19 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![feature(rustc_attrs)]
+
+#[macro_use]
+mod foo;
+
+m!();
+
+#[rustc_error]
+fn main() {} //~ ERROR compilation successful