@@ -361,16 +361,21 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
361361 lib : Library ,
362362 dep_kind : CrateDepKind ,
363363 name : Symbol ,
364- private_dep : bool ,
364+ private_dep : Option < bool > ,
365365 ) -> Result < CrateNum , CrateError > {
366366 let _prof_timer = self . sess . prof . generic_activity ( "metadata_register_crate" ) ;
367367
368368 let Library { source, metadata } = lib;
369369 let crate_root = metadata. get_root ( ) ;
370370 let host_hash = host_lib. as_ref ( ) . map ( |lib| lib. metadata . get_root ( ) . hash ( ) ) ;
371371
372- let private_dep =
373- self . sess . opts . externs . get ( name. as_str ( ) ) . map_or ( private_dep, |e| e. is_private_dep ) ;
372+ let private_dep = self
373+ . sess
374+ . opts
375+ . externs
376+ . get ( name. as_str ( ) )
377+ . map_or ( private_dep. unwrap_or ( false ) , |e| e. is_private_dep )
378+ && private_dep. unwrap_or ( true ) ;
374379
375380 // Claim this crate number and cache it
376381 let cnum = self . cstore . intern_stable_crate_id ( & crate_root) ?;
@@ -522,9 +527,9 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
522527 dep. host_hash ,
523528 Some ( & dep. extra_filename [ ..] ) ,
524529 PathKind :: Dependency ,
525- dep. is_private ,
530+ Some ( dep. is_private ) ,
526531 ) ,
527- None => ( None , None , None , None , PathKind :: Crate , false ) ,
532+ None => ( None , None , None , None , PathKind :: Crate , None ) ,
528533 } ;
529534 let result = if let Some ( cnum) = self . existing_match ( name, hash, path_kind) {
530535 ( LoadResult :: Previous ( cnum) , None )
@@ -560,7 +565,9 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
560565 dep_kind = CrateDepKind :: MacrosOnly ;
561566 }
562567 data. update_dep_kind ( |data_dep_kind| cmp:: max ( data_dep_kind, dep_kind) ) ;
563- data. update_private_dep ( |p_d| p_d && private_dep) ;
568+ if let Some ( private_dep) = private_dep {
569+ data. update_private_dep ( |p_d| p_d && private_dep) ;
570+ }
564571 Ok ( cnum)
565572 }
566573 ( LoadResult :: Loaded ( library) , host_library) => {
0 commit comments