@@ -32,9 +32,9 @@ use syntax::parse::token;
3232
3333use syntax:: ast:: { Block , Crate } ;
3434use 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 } ;
3736use syntax:: ast:: { Variant , ViewPathGlob , ViewPathList , ViewPathSimple } ;
37+ use syntax:: parse:: token:: keywords;
3838use syntax:: visit:: { self , Visitor } ;
3939
4040use syntax_pos:: { Span , DUMMY_SP } ;
@@ -130,9 +130,10 @@ impl<'b> Resolver<'b> {
130130 ViewPathList ( _, ref source_items) => {
131131 // Make sure there's at most one `mod` import in the list.
132132 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
136137 }
137138 } ) . collect :: < Vec < Span > > ( ) ;
138139
@@ -147,10 +148,12 @@ impl<'b> Resolver<'b> {
147148 }
148149
149150 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 {
154157 let name = match module_path. last ( ) {
155158 Some ( name) => * name,
156159 None => {
@@ -164,12 +167,12 @@ impl<'b> Resolver<'b> {
164167 }
165168 } ;
166169 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) ;
168171 ( module_path. to_vec ( ) , name, rename)
169172 }
170173 } ;
171174 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 ) ;
173176 self . add_import_directive ( module_path, subclass, span, id, vis) ;
174177 }
175178 }
0 commit comments