6
6
//! Imports are also considered items and placed into modules here, but not resolved yet.
7
7
8
8
use crate :: def_collector:: collect_definitions;
9
- use crate :: imports:: ImportDirective ;
10
- use crate :: imports:: ImportDirectiveSubclass :: { self , GlobImport , SingleImport } ;
9
+ use crate :: imports:: { Import , ImportKind } ;
11
10
use crate :: macros:: { LegacyBinding , LegacyScope } ;
12
11
use crate :: Namespace :: { self , MacroNS , TypeNS , ValueNS } ;
13
12
use crate :: { CrateLint , Determinacy , PathResult , ResolutionError , VisResolutionError } ;
@@ -312,7 +311,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
312
311
fn add_import_directive (
313
312
& mut self ,
314
313
module_path : Vec < Segment > ,
315
- subclass : ImportDirectiveSubclass < ' a > ,
314
+ kind : ImportKind < ' a > ,
316
315
span : Span ,
317
316
id : NodeId ,
318
317
item : & ast:: Item ,
@@ -321,11 +320,11 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
321
320
vis : ty:: Visibility ,
322
321
) {
323
322
let current_module = self . parent_scope . module ;
324
- let directive = self . r . arenas . alloc_import_directive ( ImportDirective {
323
+ let directive = self . r . arenas . alloc_import_directive ( Import {
324
+ kind,
325
325
parent_scope : self . parent_scope ,
326
326
module_path,
327
327
imported_module : Cell :: new ( None ) ,
328
- subclass,
329
328
span,
330
329
id,
331
330
use_span : item. span ,
@@ -340,10 +339,10 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
340
339
debug ! ( "add_import_directive({:?})" , directive) ;
341
340
342
341
self . r . indeterminate_imports . push ( directive) ;
343
- match directive. subclass {
342
+ match directive. kind {
344
343
// Don't add unresolved underscore imports to modules
345
- SingleImport { target : Ident { name : kw:: Underscore , .. } , .. } => { }
346
- SingleImport { target, type_ns_only, .. } => {
344
+ ImportKind :: Single { target : Ident { name : kw:: Underscore , .. } , .. } => { }
345
+ ImportKind :: Single { target, type_ns_only, .. } => {
347
346
self . r . per_ns ( |this, ns| {
348
347
if !type_ns_only || ns == TypeNS {
349
348
let key = this. new_key ( target, ns) ;
@@ -354,8 +353,8 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
354
353
}
355
354
// We don't add prelude imports to the globs since they only affect lexical scopes,
356
355
// which are not relevant to import resolution.
357
- GlobImport { is_prelude : true , .. } => { }
358
- GlobImport { .. } => current_module. globs . borrow_mut ( ) . push ( directive) ,
356
+ ImportKind :: Glob { is_prelude : true , .. } => { }
357
+ ImportKind :: Glob { .. } => current_module. globs . borrow_mut ( ) . push ( directive) ,
359
358
_ => unreachable ! ( ) ,
360
359
}
361
360
}
@@ -480,7 +479,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
480
479
) ;
481
480
}
482
481
483
- let subclass = SingleImport {
482
+ let kind = ImportKind :: Single {
484
483
source : source. ident ,
485
484
target : ident,
486
485
source_bindings : PerNS {
@@ -498,7 +497,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
498
497
} ;
499
498
self . add_import_directive (
500
499
module_path,
501
- subclass ,
500
+ kind ,
502
501
use_tree. span ,
503
502
id,
504
503
item,
@@ -508,13 +507,13 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
508
507
) ;
509
508
}
510
509
ast:: UseTreeKind :: Glob => {
511
- let subclass = GlobImport {
510
+ let kind = ImportKind :: Glob {
512
511
is_prelude : attr:: contains_name ( & item. attrs , sym:: prelude_import) ,
513
512
max_vis : Cell :: new ( ty:: Visibility :: Invisible ) ,
514
513
} ;
515
514
self . add_import_directive (
516
515
prefix,
517
- subclass ,
516
+ kind ,
518
517
use_tree. span ,
519
518
id,
520
519
item,
@@ -637,15 +636,12 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
637
636
let used = self . process_legacy_macro_imports ( item, module) ;
638
637
let binding =
639
638
( module, ty:: Visibility :: Public , sp, expansion) . to_name_binding ( self . r . arenas ) ;
640
- let directive = self . r . arenas . alloc_import_directive ( ImportDirective {
639
+ let directive = self . r . arenas . alloc_import_directive ( Import {
640
+ kind : ImportKind :: ExternCrate { source : orig_name, target : ident } ,
641
641
root_id : item. id ,
642
642
id : item. id ,
643
643
parent_scope : self . parent_scope ,
644
644
imported_module : Cell :: new ( Some ( ModuleOrUniformRoot :: Module ( module) ) ) ,
645
- subclass : ImportDirectiveSubclass :: ExternCrate {
646
- source : orig_name,
647
- target : ident,
648
- } ,
649
645
has_attributes : !item. attrs . is_empty ( ) ,
650
646
use_span_with_attributes : item. span_with_attributes ( ) ,
651
647
use_span : item. span ,
@@ -993,12 +989,12 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
993
989
}
994
990
995
991
let macro_use_directive = |this : & Self , span| {
996
- this. r . arenas . alloc_import_directive ( ImportDirective {
992
+ this. r . arenas . alloc_import_directive ( Import {
993
+ kind : ImportKind :: MacroUse ,
997
994
root_id : item. id ,
998
995
id : item. id ,
999
996
parent_scope : this. parent_scope ,
1000
997
imported_module : Cell :: new ( Some ( ModuleOrUniformRoot :: Module ( module) ) ) ,
1001
- subclass : ImportDirectiveSubclass :: MacroUse ,
1002
998
use_span_with_attributes : item. span_with_attributes ( ) ,
1003
999
has_attributes : !item. attrs . is_empty ( ) ,
1004
1000
use_span : item. span ,
0 commit comments