1414//! any imports resolved.
1515
1616use resolve_imports:: ImportDirectiveSubclass :: { self , GlobImport } ;
17- use { Module , ModuleKind } ;
17+ use { Module , ModuleS , ModuleKind } ;
1818use Namespace :: { self , TypeNS , ValueNS } ;
1919use { NameBinding , NameBindingKind , ToNameBinding } ;
2020use Resolver ;
@@ -55,8 +55,6 @@ impl<'a> ToNameBinding<'a> for (Def, Span, ty::Visibility) {
5555impl < ' b > Resolver < ' b > {
5656 /// Constructs the reduced graph for the entire crate.
5757 pub fn build_reduced_graph ( & mut self , krate : & Crate ) {
58- let no_implicit_prelude = attr:: contains_name ( & krate. attrs , "no_implicit_prelude" ) ;
59- self . graph_root . no_implicit_prelude . set ( no_implicit_prelude) ;
6058 visit:: walk_crate ( & mut BuildReducedGraphVisitor { resolver : self } , krate) ;
6159 }
6260
@@ -195,8 +193,11 @@ impl<'b> Resolver<'b> {
195193 krate : crate_id,
196194 index : CRATE_DEF_INDEX ,
197195 } ;
198- let def = Def :: Mod ( def_id) ;
199- let module = self . new_extern_crate_module ( parent, name, def, item. id ) ;
196+ let module = self . arenas . alloc_module ( ModuleS {
197+ extern_crate_id : Some ( item. id ) ,
198+ populated : Cell :: new ( false ) ,
199+ ..ModuleS :: new ( Some ( parent) , ModuleKind :: Def ( Def :: Mod ( def_id) , name) )
200+ } ) ;
200201 self . define ( parent, name, TypeNS , ( module, sp, vis) ) ;
201202
202203 self . populate_module_if_necessary ( module) ;
@@ -205,10 +206,12 @@ impl<'b> Resolver<'b> {
205206
206207 ItemKind :: Mod ( ..) => {
207208 let def = Def :: Mod ( self . definitions . local_def_id ( item. id ) ) ;
208- let module = self . new_module ( parent, ModuleKind :: Def ( def, name) , Some ( item. id ) ) ;
209- module. no_implicit_prelude . set ( {
210- parent. no_implicit_prelude . get ( ) ||
209+ let module = self . arenas . alloc_module ( ModuleS {
210+ no_implicit_prelude : parent. no_implicit_prelude || {
211211 attr:: contains_name ( & item. attrs , "no_implicit_prelude" )
212+ } ,
213+ normal_ancestor_id : Some ( item. id ) ,
214+ ..ModuleS :: new ( Some ( parent) , ModuleKind :: Def ( def, name) )
212215 } ) ;
213216 self . define ( parent, name, TypeNS , ( module, sp, vis) ) ;
214217 self . module_map . insert ( item. id , module) ;
@@ -241,8 +244,8 @@ impl<'b> Resolver<'b> {
241244 }
242245
243246 ItemKind :: Enum ( ref enum_definition, _) => {
244- let kind = ModuleKind :: Def ( Def :: Enum ( self . definitions . local_def_id ( item. id ) ) , name ) ;
245- let module = self . new_module ( parent, kind , parent . normal_ancestor_id ) ;
247+ let def = Def :: Enum ( self . definitions . local_def_id ( item. id ) ) ;
248+ let module = self . new_module ( parent, ModuleKind :: Def ( def , name ) , true ) ;
246249 self . define ( parent, name, TypeNS , ( module, sp, vis) ) ;
247250
248251 for variant in & ( * enum_definition) . variants {
@@ -293,8 +296,8 @@ impl<'b> Resolver<'b> {
293296 let def_id = self . definitions . local_def_id ( item. id ) ;
294297
295298 // Add all the items within to a new module.
296- let kind = ModuleKind :: Def ( Def :: Trait ( def_id ) , name ) ;
297- let module = self . new_module ( parent, kind , parent . normal_ancestor_id ) ;
299+ let module =
300+ self . new_module ( parent, ModuleKind :: Def ( Def :: Trait ( def_id ) , name ) , true ) ;
298301 self . define ( parent, name, TypeNS , ( module, sp, vis) ) ;
299302 self . current_module = module;
300303 }
@@ -348,8 +351,7 @@ impl<'b> Resolver<'b> {
348351 {}",
349352 block_id) ;
350353
351- let new_module =
352- self . new_module ( parent, ModuleKind :: Block ( block_id) , parent. normal_ancestor_id ) ;
354+ let new_module = self . new_module ( parent, ModuleKind :: Block ( block_id) , true ) ;
353355 self . module_map . insert ( block_id, new_module) ;
354356 self . current_module = new_module; // Descend into the block.
355357 }
@@ -377,7 +379,7 @@ impl<'b> Resolver<'b> {
377379 Def :: Mod ( _) | Def :: Enum ( ..) => {
378380 debug ! ( "(building reduced graph for external crate) building module {} {:?}" ,
379381 name, vis) ;
380- let module = self . new_module ( parent, ModuleKind :: Def ( def, name) , None ) ;
382+ let module = self . new_module ( parent, ModuleKind :: Def ( def, name) , false ) ;
381383 let _ = self . try_define ( parent, name, TypeNS , ( module, DUMMY_SP , vis) ) ;
382384 }
383385 Def :: Variant ( variant_id) => {
@@ -420,7 +422,7 @@ impl<'b> Resolver<'b> {
420422 self . trait_item_map . insert ( ( trait_item_name, def_id) , false ) ;
421423 }
422424
423- let module = self . new_module ( parent, ModuleKind :: Def ( def, name) , None ) ;
425+ let module = self . new_module ( parent, ModuleKind :: Def ( def, name) , false ) ;
424426 let _ = self . try_define ( parent, name, TypeNS , ( module, DUMMY_SP , vis) ) ;
425427 }
426428 Def :: TyAlias ( ..) | Def :: AssociatedTy ( ..) => {
0 commit comments