@@ -90,10 +90,10 @@ fn allow_unstable(cx: &mut ExtCtxt, span: Span, attr_name: &str) -> Span {
9090}
9191
9292pub 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