Skip to content

Commit 765133a

Browse files
committed
rustc_metadata: Privatize CrateMetadata::dep_kind
1 parent 32aa58c commit 765133a

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/librustc_metadata/creader.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ fn dump_crates(cstore: &CStore) {
5050
info!(" name: {}", data.root.name);
5151
info!(" cnum: {}", cnum);
5252
info!(" hash: {}", data.root.hash);
53-
info!(" reqd: {:?}", *data.dep_kind.lock());
53+
info!(" reqd: {:?}", data.dep_kind());
5454
let CrateSource { dylib, rlib, rmeta } = data.source();
5555
dylib.as_ref().map(|dl| info!(" dylib: {}", dl.0.display()));
5656
rlib.as_ref().map(|rl| info!(" rlib: {}", rl.0.display()));
@@ -353,9 +353,7 @@ impl<'a> CrateLoader<'a> {
353353
if data.root.is_proc_macro_crate() {
354354
dep_kind = DepKind::UnexportedMacrosOnly;
355355
}
356-
data.dep_kind.with_lock(|data_dep_kind| {
357-
*data_dep_kind = cmp::max(*data_dep_kind, dep_kind);
358-
});
356+
data.update_dep_kind(|data_dep_kind| cmp::max(data_dep_kind, dep_kind));
359357
Ok(cnum)
360358
}
361359
(LoadResult::Loaded(library), host_library) => {
@@ -503,7 +501,7 @@ impl<'a> CrateLoader<'a> {
503501
// #![panic_runtime] crate.
504502
self.inject_dependency_if(cnum, "a panic runtime",
505503
&|data| data.root.needs_panic_runtime);
506-
runtime_found = runtime_found || *data.dep_kind.lock() == DepKind::Explicit;
504+
runtime_found = runtime_found || data.dep_kind() == DepKind::Explicit;
507505
}
508506
});
509507

src/librustc_metadata/rmeta/decoder.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ crate struct CrateMetadata {
9999
/// Same ID set as `cnum_map` plus maybe some injected crates like panic runtime.
100100
dependencies: Lock<Vec<CrateNum>>,
101101
/// How to link (or not link) this crate to the currently compiled crate.
102-
crate dep_kind: Lock<DepKind>,
102+
dep_kind: Lock<DepKind>,
103103
/// Filesystem location of this crate.
104104
source: CrateSource,
105105
/// Whether or not this crate should be consider a private dependency
@@ -1538,6 +1538,14 @@ impl<'a, 'tcx> CrateMetadata {
15381538
crate fn source(&self) -> &CrateSource {
15391539
&self.source
15401540
}
1541+
1542+
crate fn dep_kind(&self) -> DepKind {
1543+
*self.dep_kind.lock()
1544+
}
1545+
1546+
crate fn update_dep_kind(&self, f: impl FnOnce(DepKind) -> DepKind) {
1547+
self.dep_kind.with_lock(|dep_kind| *dep_kind = f(*dep_kind))
1548+
}
15411549
}
15421550

15431551
// Cannot be implemented on 'ProcMacro', as libproc_macro

0 commit comments

Comments
 (0)