@@ -10,6 +10,7 @@ use rustc_expand::base::{ExtCtxt, Resolver};
10
10
use rustc_expand:: expand:: { AstFragment , ExpansionConfig } ;
11
11
use rustc_session:: parse:: ParseSess ;
12
12
use rustc_span:: hygiene:: AstPass ;
13
+ use rustc_span:: source_map:: SourceMap ;
13
14
use rustc_span:: symbol:: { kw, sym} ;
14
15
use rustc_span:: { Span , DUMMY_SP } ;
15
16
use smallvec:: smallvec;
@@ -44,6 +45,7 @@ struct CollectProcMacros<'a> {
44
45
macros : Vec < ProcMacro > ,
45
46
in_root : bool ,
46
47
handler : & ' a rustc_errors:: Handler ,
48
+ source_map : & ' a SourceMap ,
47
49
is_proc_macro_crate : bool ,
48
50
is_test_crate : bool ,
49
51
}
@@ -65,6 +67,7 @@ pub fn inject(
65
67
macros : Vec :: new ( ) ,
66
68
in_root : true ,
67
69
handler,
70
+ source_map : sess. source_map ( ) ,
68
71
is_proc_macro_crate,
69
72
is_test_crate,
70
73
} ;
@@ -195,7 +198,7 @@ impl<'a> CollectProcMacros<'a> {
195
198
} else {
196
199
"functions tagged with `#[proc_macro_derive]` must be `pub`"
197
200
} ;
198
- self . handler . span_err ( item. span , msg) ;
201
+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
199
202
}
200
203
}
201
204
@@ -214,7 +217,7 @@ impl<'a> CollectProcMacros<'a> {
214
217
} else {
215
218
"functions tagged with `#[proc_macro_attribute]` must be `pub`"
216
219
} ;
217
- self . handler . span_err ( item. span , msg) ;
220
+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
218
221
}
219
222
}
220
223
@@ -233,7 +236,7 @@ impl<'a> CollectProcMacros<'a> {
233
236
} else {
234
237
"functions tagged with `#[proc_macro]` must be `pub`"
235
238
} ;
236
- self . handler . span_err ( item. span , msg) ;
239
+ self . handler . span_err ( self . source_map . def_span ( item. span ) , msg) ;
237
240
}
238
241
}
239
242
}
@@ -244,7 +247,7 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> {
244
247
if self . is_proc_macro_crate && attr:: contains_name ( & item. attrs , sym:: macro_export) {
245
248
let msg =
246
249
"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) ;
248
251
}
249
252
}
250
253
@@ -295,7 +298,7 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> {
295
298
296
299
let attr = match found_attr {
297
300
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 ) ) ;
299
302
let prev_in_root = mem:: replace ( & mut self . in_root , false ) ;
300
303
visit:: walk_item ( self , item) ;
301
304
self . in_root = prev_in_root;
0 commit comments