@@ -10,6 +10,7 @@ use rustc_expand::base::{ExtCtxt, Resolver};
1010use rustc_expand:: expand:: { AstFragment , ExpansionConfig } ;
1111use rustc_session:: parse:: ParseSess ;
1212use rustc_span:: hygiene:: AstPass ;
13+ use rustc_span:: source_map:: SourceMap ;
1314use rustc_span:: symbol:: { kw, sym} ;
1415use rustc_span:: { Span , DUMMY_SP } ;
1516use smallvec:: smallvec;
@@ -44,6 +45,7 @@ struct CollectProcMacros<'a> {
4445 macros : Vec < ProcMacro > ,
4546 in_root : bool ,
4647 handler : & ' a rustc_errors:: Handler ,
48+ source_map : & ' a SourceMap ,
4749 is_proc_macro_crate : bool ,
4850 is_test_crate : bool ,
4951}
@@ -65,6 +67,7 @@ pub fn inject(
6567 macros : Vec :: new ( ) ,
6668 in_root : true ,
6769 handler,
70+ source_map : sess. source_map ( ) ,
6871 is_proc_macro_crate,
6972 is_test_crate,
7073 } ;
@@ -195,7 +198,7 @@ impl<'a> CollectProcMacros<'a> {
195198 } else {
196199 "functions tagged with `#[proc_macro_derive]` must be `pub`"
197200 } ;
198- self . handler . span_err ( item. span , msg) ;
201+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
199202 }
200203 }
201204
@@ -214,7 +217,7 @@ impl<'a> CollectProcMacros<'a> {
214217 } else {
215218 "functions tagged with `#[proc_macro_attribute]` must be `pub`"
216219 } ;
217- self . handler . span_err ( item. span , msg) ;
220+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
218221 }
219222 }
220223
@@ -233,7 +236,7 @@ impl<'a> CollectProcMacros<'a> {
233236 } else {
234237 "functions tagged with `#[proc_macro]` must be `pub`"
235238 } ;
236- self . handler . span_err ( item. span , msg) ;
239+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
237240 }
238241 }
239242}
@@ -244,7 +247,7 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> {
244247 if self . is_proc_macro_crate && attr:: contains_name ( & item. attrs , sym:: macro_export) {
245248 let msg =
246249 "cannot export macro_rules! macros from a `proc-macro` crate type currently" ;
247- self . handler . span_err ( item. span , msg) ;
250+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
248251 }
249252 }
250253
@@ -295,7 +298,7 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> {
295298
296299 let attr = match found_attr {
297300 None => {
298- self . check_not_pub_in_root ( & item. vis , item. span ) ;
301+ self . check_not_pub_in_root ( & item. vis , self . source_map . def_span ( item. span ) ) ;
299302 let prev_in_root = mem:: replace ( & mut self . in_root , false ) ;
300303 visit:: walk_item ( self , item) ;
301304 self . in_root = prev_in_root;
0 commit comments