@@ -361,6 +361,7 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
361361 lib : Library ,
362362 dep_kind : CrateDepKind ,
363363 name : Symbol ,
364+ private_dep : bool ,
364365 ) -> Result < CrateNum , CrateError > {
365366 let _prof_timer = self . sess . prof . generic_activity ( "metadata_register_crate" ) ;
366367
@@ -369,7 +370,7 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
369370 let host_hash = host_lib. as_ref ( ) . map ( |lib| lib. metadata . get_root ( ) . hash ( ) ) ;
370371
371372 let private_dep =
372- self . sess . opts . externs . get ( name. as_str ( ) ) . map_or ( false , |e| e. is_private_dep ) ;
373+ self . sess . opts . externs . get ( name. as_str ( ) ) . map_or ( private_dep , |e| e. is_private_dep ) ;
373374
374375 // Claim this crate number and cache it
375376 let cnum = self . cstore . intern_stable_crate_id ( & crate_root) ?;
@@ -514,15 +515,16 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
514515 if !name. as_str ( ) . is_ascii ( ) {
515516 return Err ( CrateError :: NonAsciiName ( name) ) ;
516517 }
517- let ( root, hash, host_hash, extra_filename, path_kind) = match dep {
518+ let ( root, hash, host_hash, extra_filename, path_kind, private_dep ) = match dep {
518519 Some ( ( root, dep) ) => (
519520 Some ( root) ,
520521 Some ( dep. hash ) ,
521522 dep. host_hash ,
522523 Some ( & dep. extra_filename [ ..] ) ,
523524 PathKind :: Dependency ,
525+ dep. is_private ,
524526 ) ,
525- None => ( None , None , None , None , PathKind :: Crate ) ,
527+ None => ( None , None , None , None , PathKind :: Crate , false ) ,
526528 } ;
527529 let result = if let Some ( cnum) = self . existing_match ( name, hash, path_kind) {
528530 ( LoadResult :: Previous ( cnum) , None )
@@ -558,10 +560,11 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
558560 dep_kind = CrateDepKind :: MacrosOnly ;
559561 }
560562 data. update_dep_kind ( |data_dep_kind| cmp:: max ( data_dep_kind, dep_kind) ) ;
563+ data. update_private_dep ( |private_dep| private_dep && private_dep) ;
561564 Ok ( cnum)
562565 }
563566 ( LoadResult :: Loaded ( library) , host_library) => {
564- self . register_crate ( host_library, root, library, dep_kind, name)
567+ self . register_crate ( host_library, root, library, dep_kind, name, private_dep )
565568 }
566569 _ => panic ! ( ) ,
567570 }
0 commit comments