@@ -32,9 +32,9 @@ use syntax::parse::token;
32
32
33
33
use syntax:: ast:: { Block , Crate } ;
34
34
use syntax:: ast:: { ForeignItem , ForeignItemKind , Item , ItemKind } ;
35
- use syntax:: ast:: { Mutability , PathListItemKind } ;
36
- use syntax:: ast:: { StmtKind , TraitItemKind } ;
35
+ use syntax:: ast:: { Mutability , StmtKind , TraitItemKind } ;
37
36
use syntax:: ast:: { Variant , ViewPathGlob , ViewPathList , ViewPathSimple } ;
37
+ use syntax:: parse:: token:: keywords;
38
38
use syntax:: visit:: { self , Visitor } ;
39
39
40
40
use syntax_pos:: { Span , DUMMY_SP } ;
@@ -130,9 +130,10 @@ impl<'b> Resolver<'b> {
130
130
ViewPathList ( _, ref source_items) => {
131
131
// Make sure there's at most one `mod` import in the list.
132
132
let mod_spans = source_items. iter ( ) . filter_map ( |item| {
133
- match item. node {
134
- PathListItemKind :: Mod { .. } => Some ( item. span ) ,
135
- _ => None ,
133
+ if item. node . name . name == keywords:: SelfValue . name ( ) {
134
+ Some ( item. span )
135
+ } else {
136
+ None
136
137
}
137
138
} ) . collect :: < Vec < Span > > ( ) ;
138
139
@@ -147,10 +148,12 @@ impl<'b> Resolver<'b> {
147
148
}
148
149
149
150
for source_item in source_items {
150
- let ( module_path, name, rename) = match source_item. node {
151
- PathListItemKind :: Ident { name, rename, .. } =>
152
- ( module_path. clone ( ) , name. name , rename. unwrap_or ( name) . name ) ,
153
- PathListItemKind :: Mod { rename, .. } => {
151
+ let node = source_item. node ;
152
+ let ( module_path, name, rename) = {
153
+ if node. name . name != keywords:: SelfValue . name ( ) {
154
+ let rename = node. rename . unwrap_or ( node. name ) . name ;
155
+ ( module_path. clone ( ) , node. name . name , rename)
156
+ } else {
154
157
let name = match module_path. last ( ) {
155
158
Some ( name) => * name,
156
159
None => {
@@ -164,12 +167,12 @@ impl<'b> Resolver<'b> {
164
167
}
165
168
} ;
166
169
let module_path = module_path. split_last ( ) . unwrap ( ) . 1 ;
167
- let rename = rename. map ( |i| i. name ) . unwrap_or ( name) ;
170
+ let rename = node . rename . map ( |i| i. name ) . unwrap_or ( name) ;
168
171
( module_path. to_vec ( ) , name, rename)
169
172
}
170
173
} ;
171
174
let subclass = ImportDirectiveSubclass :: single ( rename, name) ;
172
- let ( span, id) = ( source_item. span , source_item. node . id ( ) ) ;
175
+ let ( span, id) = ( source_item. span , source_item. node . id ) ;
173
176
self . add_import_directive ( module_path, subclass, span, id, vis) ;
174
177
}
175
178
}
0 commit comments