Skip to content

Commit d7041de

Browse files
committed
rustc_metadata: fix private_dep logic in register_crate
1 parent 64c11bc commit d7041de

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

compiler/rustc_metadata/src/creader.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)