@@ -18,7 +18,7 @@ use syntax::errors::DiagnosticBuilder;
18
18
use syntax:: ext:: base:: { self , MultiModifier , MultiDecorator , MultiItemModifier } ;
19
19
use syntax:: ext:: base:: { NormalTT , SyntaxExtension } ;
20
20
use syntax:: ext:: expand:: { Expansion , Invocation , InvocationKind } ;
21
- use syntax:: ext:: hygiene:: Mark ;
21
+ use syntax:: ext:: hygiene:: { Mark , SyntaxContext } ;
22
22
use syntax:: ext:: tt:: macro_rules;
23
23
use syntax:: parse:: token:: intern;
24
24
use syntax:: util:: lev_distance:: find_best_match_for_name;
@@ -30,6 +30,7 @@ pub struct NameBinding {
30
30
31
31
#[ derive( Clone ) ]
32
32
pub struct ExpansionData < ' a > {
33
+ backtrace : SyntaxContext ,
33
34
pub module : Module < ' a > ,
34
35
def_index : DefIndex ,
35
36
// True if this expansion is in a `const_integer` position, for example `[u32; m!()]`.
@@ -40,6 +41,7 @@ pub struct ExpansionData<'a> {
40
41
impl < ' a > ExpansionData < ' a > {
41
42
pub fn root ( graph_root : Module < ' a > ) -> Self {
42
43
ExpansionData {
44
+ backtrace : SyntaxContext :: empty ( ) ,
43
45
module : graph_root,
44
46
def_index : CRATE_DEF_INDEX ,
45
47
const_integer : false ,
@@ -56,6 +58,7 @@ impl<'a> base::Resolver for Resolver<'a> {
56
58
let mark = Mark :: fresh ( ) ;
57
59
let module = self . module_map [ & id] ;
58
60
self . expansion_data . insert ( mark, ExpansionData {
61
+ backtrace : SyntaxContext :: empty ( ) ,
59
62
module : module,
60
63
def_index : module. def_id ( ) . unwrap ( ) . index ,
61
64
const_integer : false ,
@@ -171,9 +174,10 @@ impl<'a> Resolver<'a> {
171
174
172
175
fn collect_def_ids ( & mut self , mark : Mark , expansion : & Expansion ) {
173
176
let expansion_data = & mut self . expansion_data ;
174
- let ExpansionData { def_index, const_integer, module } = expansion_data[ & mark] ;
177
+ let ExpansionData { backtrace , def_index, const_integer, module } = expansion_data[ & mark] ;
175
178
let visit_macro_invoc = & mut |invoc : map:: MacroInvocationData | {
176
179
expansion_data. entry ( invoc. mark ) . or_insert ( ExpansionData {
180
+ backtrace : backtrace. apply_mark ( invoc. mark ) ,
177
181
def_index : invoc. def_index ,
178
182
const_integer : invoc. const_integer ,
179
183
module : module,
0 commit comments