mirror of
https://github.com/rust-lang/rust
synced 2024-10-22 00:14:09 +00:00
Return to defining crate_hash similarly to other query providers
This commit is contained in:
parent
62139ffad4
commit
0962e5eba9
|
@ -44,7 +44,10 @@ pub fn provide_extern(providers: &mut Providers) {
|
|||
let ($def_id, $other) = def_id_arg.into_args();
|
||||
assert!(!$def_id.is_local());
|
||||
|
||||
if $tcx.dep_graph.is_fully_enabled() {
|
||||
// External query providers call `crate_hash` in order to register a dependency
|
||||
// on the crate metadata. The exception is `crate_hash` itself, which obviously
|
||||
// doesn't need to do this (and can't, as it would cause a query cycle).
|
||||
if stringify!($name) != "crate_hash" && $tcx.dep_graph.is_fully_enabled() {
|
||||
$tcx.ensure().crate_hash($def_id.krate);
|
||||
}
|
||||
|
||||
|
@ -53,24 +56,8 @@ pub fn provide_extern(providers: &mut Providers) {
|
|||
$compute
|
||||
})*
|
||||
|
||||
// The other external query providers call `crate_hash` in order to register a
|
||||
// dependency on the crate metadata. The `crate_hash` implementation differs in
|
||||
// that it doesn't need to do this (and can't, as it would cause a query cycle).
|
||||
fn crate_hash<'tcx>(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
def_id_arg: ty::query::query_keys::crate_hash<'tcx>,
|
||||
) -> ty::query::query_values::crate_hash<'tcx> {
|
||||
let _prof_timer = tcx.prof.generic_activity("metadata_decode_entry_crate_hash");
|
||||
|
||||
let (def_id, _) = def_id_arg.into_args();
|
||||
assert!(!def_id.is_local());
|
||||
|
||||
CStore::from_tcx(tcx).get_crate_data(def_id.krate).root.hash
|
||||
}
|
||||
|
||||
*providers = Providers {
|
||||
$($name,)*
|
||||
crate_hash,
|
||||
..*providers
|
||||
};
|
||||
}
|
||||
|
@ -206,6 +193,7 @@ fn into_args(self) -> (DefId, DefId) {
|
|||
})
|
||||
}
|
||||
crate_disambiguator => { cdata.root.disambiguator }
|
||||
crate_hash => { cdata.root.hash }
|
||||
crate_host_hash => { cdata.host_hash }
|
||||
original_crate_name => { cdata.root.name }
|
||||
|
||||
|
|
Loading…
Reference in a new issue