about summary refs log tree commit diff
path: root/src/libsyntax_ext/deriving/mod.rs
diff options
context:
space:
mode:
authorBaoshan <pangbw@gmail.com>2019-09-01 17:52:09 -0700
committerGitHub <noreply@github.com>2019-09-01 17:52:09 -0700
commitd5ef9df032ec32c48d6c59050735352c48ff16f8 (patch)
tree31a87971a84ffc967645099773910d6498d0cb0b /src/libsyntax_ext/deriving/mod.rs
parent7726b54c059db0759e9725a58e222118eacec6d9 (diff)
parentdfd43f0fdd4e6969c7d82c0670d70bf305fbccf8 (diff)
downloadrust-d5ef9df032ec32c48d6c59050735352c48ff16f8.tar.gz
rust-d5ef9df032ec32c48d6c59050735352c48ff16f8.zip
Merge pull request #13 from rust-lang/master
sync with rust-lang/rust
Diffstat (limited to 'src/libsyntax_ext/deriving/mod.rs')
-rw-r--r--src/libsyntax_ext/deriving/mod.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs
index da68eea0c50..60b6eba7a4b 100644
--- a/src/libsyntax_ext/deriving/mod.rs
+++ b/src/libsyntax_ext/deriving/mod.rs
@@ -48,6 +48,9 @@ impl MultiItemModifier for BuiltinDerive {
               meta_item: &MetaItem,
               item: Annotatable)
               -> Vec<Annotatable> {
+        // FIXME: Built-in derives often forget to give spans contexts,
+        // so we are doing it here in a centralized way.
+        let span = ecx.with_def_site_ctxt(span);
         let mut items = Vec::new();
         (self.0)(ecx, span, meta_item, &item, &mut |a| items.push(a));
         items
@@ -60,7 +63,7 @@ fn call_intrinsic(cx: &ExtCtxt<'_>,
                   intrinsic: &str,
                   args: Vec<P<ast::Expr>>)
                   -> P<ast::Expr> {
-    let span = span.with_ctxt(cx.backtrace());
+    let span = cx.with_def_site_ctxt(span);
     let path = cx.std_path(&[sym::intrinsics, Symbol::intern(intrinsic)]);
     let call = cx.expr_call_global(span, path, args);