about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-09-08 01:44:51 -0700
committerGitHub <noreply@github.com>2016-09-08 01:44:51 -0700
commit0b02ae02bbcae5e48da810fec24ae5d3d947115c (patch)
tree211d6c773265440a39d188645e86c71ea5cfab45 /src/libsyntax_ext
parenta5dbf8a0f8843c5466c3866cc2a288c0ef7051d2 (diff)
parentd6ea10ec764bbddd39cc4a3d34b6a4987ac867a6 (diff)
downloadrust-0b02ae02bbcae5e48da810fec24ae5d3d947115c.tar.gz
rust-0b02ae02bbcae5e48da810fec24ae5d3d947115c.zip
Auto merge of #36316 - jseyfried:custom_derive_internal_unstable, r=eddyb
Avoid instaiblity errors in code generated by `syntax_ext::deriving::call_intrinsic()`

r? @eddyb
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/deriving/mod.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs
index 5582166c12e..fcbce363890 100644
--- a/src/libsyntax_ext/deriving/mod.rs
+++ b/src/libsyntax_ext/deriving/mod.rs
@@ -338,10 +338,19 @@ fn hygienic_type_parameter(item: &Annotatable, base: &str) -> String {
 
 /// Constructs an expression that calls an intrinsic
 fn call_intrinsic(cx: &ExtCtxt,
-                  span: Span,
+                  mut span: Span,
                   intrinsic: &str,
                   args: Vec<P<ast::Expr>>)
                   -> P<ast::Expr> {
+    span.expn_id = cx.codemap().record_expansion(codemap::ExpnInfo {
+        call_site: span,
+        callee: codemap::NameAndSpan {
+            format: codemap::MacroAttribute(intern("derive")),
+            span: Some(span),
+            allow_internal_unstable: true,
+        },
+    });
+
     let path = cx.std_path(&["intrinsics", intrinsic]);
     let call = cx.expr_call_global(span, path, args);