Skip to content

Commit 2fa9feb

Browse files
committed
Auto merge of #38947 - nrc:custom-derive-span, r=jseyfried
Give custom derive spans an expansion ID r? @jseyfried
2 parents 26dc969 + 3be6991 commit 2fa9feb

File tree

1 file changed

+20
-7
lines changed
  • src/libsyntax_ext/deriving

1 file changed

+20
-7
lines changed

src/libsyntax_ext/deriving/mod.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ fn allow_unstable(cx: &mut ExtCtxt, span: Span, attr_name: &str) -> Span {
9090
}
9191

9292
pub fn expand_derive(cx: &mut ExtCtxt,
93-
span: Span,
94-
mitem: &MetaItem,
95-
annotatable: Annotatable)
96-
-> Vec<Annotatable> {
93+
span: Span,
94+
mitem: &MetaItem,
95+
annotatable: Annotatable)
96+
-> Vec<Annotatable> {
9797
debug!("expand_derive: span = {:?}", span);
9898
debug!("expand_derive: mitem = {:?}", mitem);
9999
debug!("expand_derive: annotatable input = {:?}", annotatable);
@@ -235,8 +235,21 @@ pub fn expand_derive(cx: &mut ExtCtxt,
235235
let titem = cx.meta_list_item_word(titem.span, titem.name().unwrap());
236236
let mitem = cx.meta_list(titem.span, derive, vec![titem]);
237237
let item = Annotatable::Item(item);
238+
239+
let span = Span {
240+
expn_id: cx.codemap().record_expansion(codemap::ExpnInfo {
241+
call_site: mitem.span,
242+
callee: codemap::NameAndSpan {
243+
format: codemap::MacroAttribute(Symbol::intern(&format!("derive({})", tname))),
244+
span: None,
245+
allow_internal_unstable: false,
246+
},
247+
}),
248+
..mitem.span
249+
};
250+
238251
if let SyntaxExtension::CustomDerive(ref ext) = *ext {
239-
return ext.expand(cx, mitem.span, &mitem, item);
252+
return ext.expand(cx, span, &mitem, item);
240253
} else {
241254
unreachable!()
242255
}
@@ -285,8 +298,8 @@ pub fn expand_derive(cx: &mut ExtCtxt,
285298
expn_id: cx.codemap().record_expansion(codemap::ExpnInfo {
286299
call_site: titem.span,
287300
callee: codemap::NameAndSpan {
288-
format: codemap::MacroAttribute(Symbol::intern(&format!("derive({})", tname))),
289-
span: Some(titem.span),
301+
format: codemap::MacroAttribute(name),
302+
span: None,
290303
allow_internal_unstable: true,
291304
},
292305
}),

0 commit comments

Comments
 (0)