@@ -90,10 +90,10 @@ fn allow_unstable(cx: &mut ExtCtxt, span: Span, attr_name: &str) -> Span {
90
90
}
91
91
92
92
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 > {
97
97
debug ! ( "expand_derive: span = {:?}" , span) ;
98
98
debug ! ( "expand_derive: mitem = {:?}" , mitem) ;
99
99
debug ! ( "expand_derive: annotatable input = {:?}" , annotatable) ;
@@ -235,8 +235,21 @@ pub fn expand_derive(cx: &mut ExtCtxt,
235
235
let titem = cx. meta_list_item_word ( titem. span , titem. name ( ) . unwrap ( ) ) ;
236
236
let mitem = cx. meta_list ( titem. span , derive, vec ! [ titem] ) ;
237
237
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
+
238
251
if let SyntaxExtension :: CustomDerive ( ref ext) = * ext {
239
- return ext. expand ( cx, mitem . span , & mitem, item) ;
252
+ return ext. expand ( cx, span, & mitem, item) ;
240
253
} else {
241
254
unreachable ! ( )
242
255
}
@@ -285,8 +298,8 @@ pub fn expand_derive(cx: &mut ExtCtxt,
285
298
expn_id : cx. codemap ( ) . record_expansion ( codemap:: ExpnInfo {
286
299
call_site : titem. span ,
287
300
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 ,
290
303
allow_internal_unstable : true ,
291
304
} ,
292
305
} ) ,
0 commit comments