@@ -47,7 +47,7 @@ impl<'a> base::Resolver for Resolver<'a> {
47
47
48
48
fn visit_expansion ( & mut self , mark : Mark , expansion : & Expansion ) {
49
49
expansion. visit_with ( & mut ExpansionVisitor {
50
- current_module : self . expansion_data [ mark. as_u32 ( ) as usize ] . module . clone ( ) ,
50
+ current_module : self . expansion_data [ & mark. as_u32 ( ) ] . module . clone ( ) ,
51
51
resolver : self ,
52
52
} ) ;
53
53
}
@@ -57,7 +57,7 @@ impl<'a> base::Resolver for Resolver<'a> {
57
57
self . macro_names . insert ( ident. name ) ;
58
58
}
59
59
60
- let mut module = self . expansion_data [ scope. as_u32 ( ) as usize ] . module . clone ( ) ;
60
+ let mut module = self . expansion_data [ & scope. as_u32 ( ) ] . module . clone ( ) ;
61
61
while module. macros_escape {
62
62
module = module. parent . clone ( ) . unwrap ( ) ;
63
63
}
@@ -71,7 +71,7 @@ impl<'a> base::Resolver for Resolver<'a> {
71
71
fn find_attr_invoc ( & mut self , attrs : & mut Vec < ast:: Attribute > ) -> Option < ast:: Attribute > {
72
72
for i in 0 ..attrs. len ( ) {
73
73
let name = intern ( & attrs[ i] . name ( ) ) ;
74
- match self . expansion_data [ 0 ] . module . macros . borrow ( ) . get ( & name) {
74
+ match self . expansion_data [ & 0 ] . module . macros . borrow ( ) . get ( & name) {
75
75
Some ( ext) => match * * ext {
76
76
MultiModifier ( ..) | MultiDecorator ( ..) => return Some ( attrs. remove ( i) ) ,
77
77
_ => { }
@@ -82,7 +82,7 @@ impl<'a> base::Resolver for Resolver<'a> {
82
82
None
83
83
}
84
84
85
- fn resolve_invoc ( & mut self , invoc : & Invocation ) -> Option < Rc < SyntaxExtension > > {
85
+ fn resolve_invoc ( & mut self , scope : Mark , invoc : & Invocation ) -> Option < Rc < SyntaxExtension > > {
86
86
let ( name, span) = match invoc. kind {
87
87
InvocationKind :: Bang { ref mac, .. } => {
88
88
let path = & mac. node . path ;
@@ -97,7 +97,7 @@ impl<'a> base::Resolver for Resolver<'a> {
97
97
InvocationKind :: Attr { ref attr, .. } => ( intern ( & * attr. name ( ) ) , attr. span ) ,
98
98
} ;
99
99
100
- let mut module = self . expansion_data [ invoc . mark ( ) . as_u32 ( ) as usize ] . module . clone ( ) ;
100
+ let mut module = self . expansion_data [ & scope . as_u32 ( ) ] . module . clone ( ) ;
101
101
loop {
102
102
if let Some ( ext) = module. macros . borrow ( ) . get ( & name) {
103
103
return Some ( ext. clone ( ) ) ;
@@ -135,8 +135,7 @@ struct ExpansionVisitor<'b, 'a: 'b> {
135
135
136
136
impl < ' a , ' b > ExpansionVisitor < ' a , ' b > {
137
137
fn visit_invoc ( & mut self , id : ast:: NodeId ) {
138
- assert_eq ! ( id. as_u32( ) , self . resolver. expansion_data. len( ) as u32 ) ;
139
- self . resolver . expansion_data . push ( ExpansionData {
138
+ self . resolver . expansion_data . insert ( id. as_u32 ( ) , ExpansionData {
140
139
module : self . current_module . clone ( ) ,
141
140
} ) ;
142
141
}
0 commit comments