Skip to content

Commit aff1f2a

Browse files
committed
Handle CrateOrigin::Injected in CrateOrigin::private_dep
1 parent c7a99e2 commit aff1f2a

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

compiler/rustc_metadata/src/creader.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ impl<'a> CrateOrigin<'a> {
195195
CrateOrigin::IndirectDependency { parent_private, dep, .. } => {
196196
Some(dep.is_private || *parent_private)
197197
}
198+
CrateOrigin::Injected => Some(true),
198199
_ => None,
199200
}
200201
}
@@ -546,17 +547,7 @@ impl CStore {
546547
/// Sometimes the directly dependent crate is not specified by `--extern`, in this case,
547548
/// `private-dep` is none during loading. This is equivalent to the scenario where the
548549
/// command parameter is set to `public-dependency`
549-
fn is_private_dep(
550-
&self,
551-
externs: &Externs,
552-
name: Symbol,
553-
private_dep: Option<bool>,
554-
origin: CrateOrigin<'_>,
555-
) -> bool {
556-
if matches!(origin, CrateOrigin::Injected) {
557-
return true;
558-
}
559-
550+
fn is_private_dep(&self, externs: &Externs, name: Symbol, private_dep: Option<bool>) -> bool {
560551
let extern_private = externs.get(name.as_str()).map(|e| e.is_private_dep);
561552
match (extern_private, private_dep) {
562553
// Explicit non-private via `--extern`, explicit non-private from metadata, or
@@ -583,7 +574,7 @@ impl CStore {
583574
let Library { source, metadata } = lib;
584575
let crate_root = metadata.get_root();
585576
let host_hash = host_lib.as_ref().map(|lib| lib.metadata.get_root().hash());
586-
let private_dep = self.is_private_dep(&tcx.sess.opts.externs, name, private_dep, origin);
577+
let private_dep = self.is_private_dep(&tcx.sess.opts.externs, name, private_dep);
587578

588579
// Claim this crate number and cache it
589580
let feed = self.intern_stable_crate_id(tcx, &crate_root)?;
@@ -814,8 +805,7 @@ impl CStore {
814805
// not specified by `--extern` on command line parameters, it may be
815806
// `private-dependency` when `register_crate` is called for the first time. Then it must be updated to
816807
// `public-dependency` here.
817-
let private_dep =
818-
self.is_private_dep(&tcx.sess.opts.externs, name, private_dep, origin);
808+
let private_dep = self.is_private_dep(&tcx.sess.opts.externs, name, private_dep);
819809
let data = self.get_crate_data_mut(cnum);
820810
if data.is_proc_macro_crate() {
821811
dep_kind = CrateDepKind::MacrosOnly;

0 commit comments

Comments
 (0)