Skip to content

Commit fe41520

Browse files
committed
Add ExpnId to expanded procedural macro code
1 parent 707a40f commit fe41520

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/libsyntax_ext/deriving/custom.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010

1111
use std::panic;
1212

13+
use errors::FatalError;
1314
use rustc_macro::{TokenStream, __internal};
1415
use syntax::ast::{self, ItemKind};
15-
use syntax::codemap::Span;
16+
use syntax::codemap::{ExpnInfo, MacroAttribute, NameAndSpan, Span};
1617
use syntax::ext::base::*;
1718
use syntax::fold::{self, Folder};
18-
use errors::FatalError;
19+
use syntax::parse::token::intern;
20+
use syntax::print::pprust;
1921

2022
pub struct CustomDerive {
2123
inner: fn(TokenStream) -> TokenStream,
@@ -31,7 +33,7 @@ impl MultiItemModifier for CustomDerive {
3133
fn expand(&self,
3234
ecx: &mut ExtCtxt,
3335
span: Span,
34-
_meta_item: &ast::MetaItem,
36+
meta_item: &ast::MetaItem,
3537
item: Annotatable)
3638
-> Vec<Annotatable> {
3739
let item = match item {
@@ -53,7 +55,17 @@ impl MultiItemModifier for CustomDerive {
5355
}
5456
}
5557

56-
let input_span = item.span;
58+
let input_span = Span {
59+
expn_id: ecx.codemap().record_expansion(ExpnInfo {
60+
call_site: span,
61+
callee: NameAndSpan {
62+
format: MacroAttribute(intern(&pprust::meta_item_to_string(meta_item))),
63+
span: Some(span),
64+
allow_internal_unstable: true,
65+
},
66+
}),
67+
..item.span
68+
};
5769
let input = __internal::new_token_stream(item);
5870
let res = __internal::set_parse_sess(&ecx.parse_sess, || {
5971
let inner = self.inner;

0 commit comments

Comments
 (0)