Skip to content

Commit 178b813

Browse files
Make iteration order of collect_return_position_impl_trait_in_trait_tys query stable
1 parent 5135e1a commit 178b813

File tree

6 files changed

+14
-13
lines changed

6 files changed

+14
-13
lines changed

compiler/rustc_hir_analysis/src/check/compare_impl_item.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use super::potentially_plural_count;
22
use crate::errors::LifetimesOrBoundsMismatchOnTrait;
3-
use hir::def_id::{DefId, LocalDefId};
3+
use hir::def_id::{DefId, DefIdMap, LocalDefId};
44
use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexSet};
55
use rustc_errors::{pluralize, struct_span_err, Applicability, DiagnosticId, ErrorGuaranteed};
66
use rustc_hir as hir;
@@ -478,7 +478,7 @@ fn compare_asyncness<'tcx>(
478478
pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>(
479479
tcx: TyCtxt<'tcx>,
480480
impl_m_def_id: LocalDefId,
481-
) -> Result<&'tcx FxHashMap<DefId, ty::EarlyBinder<Ty<'tcx>>>, ErrorGuaranteed> {
481+
) -> Result<&'tcx DefIdMap<ty::EarlyBinder<Ty<'tcx>>>, ErrorGuaranteed> {
482482
let impl_m = tcx.opt_associated_item(impl_m_def_id.to_def_id()).unwrap();
483483
let trait_m = tcx.opt_associated_item(impl_m.trait_item_def_id.unwrap()).unwrap();
484484
let impl_trait_ref =
@@ -706,7 +706,7 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>(
706706
);
707707
ocx.resolve_regions_and_report_errors(impl_m_def_id, &outlives_env)?;
708708

709-
let mut remapped_types = FxHashMap::default();
709+
let mut remapped_types = DefIdMap::default();
710710
for (def_id, (ty, args)) in collected_types {
711711
match infcx.fully_resolve((ty, args)) {
712712
Ok((ty, args)) => {

compiler/rustc_metadata/src/rmeta/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use rustc_attr as attr;
1212
use rustc_data_structures::svh::Svh;
1313
use rustc_hir as hir;
1414
use rustc_hir::def::{CtorKind, DefKind, DocLinkResMap};
15-
use rustc_hir::def_id::{CrateNum, DefId, DefIndex, DefPathHash, StableCrateId};
15+
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIndex, DefPathHash, StableCrateId};
1616
use rustc_hir::definitions::DefKey;
1717
use rustc_hir::lang_items::LangItem;
1818
use rustc_index::bit_set::BitSet;
@@ -460,7 +460,7 @@ define_tables! {
460460
macro_definition: Table<DefIndex, LazyValue<ast::DelimArgs>>,
461461
proc_macro: Table<DefIndex, MacroKind>,
462462
deduced_param_attrs: Table<DefIndex, LazyArray<DeducedParamAttrs>>,
463-
trait_impl_trait_tys: Table<DefIndex, LazyValue<FxHashMap<DefId, ty::EarlyBinder<Ty<'static>>>>>,
463+
trait_impl_trait_tys: Table<DefIndex, LazyValue<DefIdMap<ty::EarlyBinder<Ty<'static>>>>>,
464464
doc_link_resolutions: Table<DefIndex, LazyValue<DocLinkResMap>>,
465465
doc_link_traits_in_scope: Table<DefIndex, LazyArray<DefId>>,
466466
assumed_wf_types_for_rpitit: Table<DefIndex, LazyArray<(Ty<'static>, Span)>>,

compiler/rustc_middle/src/arena.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ macro_rules! arena_types {
103103
[] dep_kind: rustc_middle::dep_graph::DepKindStruct<'tcx>,
104104

105105
[decode] trait_impl_trait_tys:
106-
rustc_data_structures::fx::FxHashMap<
106+
rustc_data_structures::unord::UnordMap<
107107
rustc_hir::def_id::DefId,
108108
rustc_middle::ty::EarlyBinder<rustc_middle::ty::Ty<'tcx>>
109109
>,

compiler/rustc_middle/src/query/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ use rustc_ast as ast;
5757
use rustc_ast::expand::{allocator::AllocatorKind, StrippedCfgItem};
5858
use rustc_attr as attr;
5959
use rustc_data_structures::fingerprint::Fingerprint;
60-
use rustc_data_structures::fx::{FxHashMap, FxIndexMap, FxIndexSet};
60+
use rustc_data_structures::fx::{FxIndexMap, FxIndexSet};
6161
use rustc_data_structures::steal::Steal;
6262
use rustc_data_structures::svh::Svh;
6363
use rustc_data_structures::sync::Lrc;
@@ -264,7 +264,7 @@ rustc_queries! {
264264
}
265265

266266
query collect_return_position_impl_trait_in_trait_tys(key: DefId)
267-
-> Result<&'tcx FxHashMap<DefId, ty::EarlyBinder<Ty<'tcx>>>, ErrorGuaranteed>
267+
-> Result<&'tcx DefIdMap<ty::EarlyBinder<Ty<'tcx>>>, ErrorGuaranteed>
268268
{
269269
desc { "comparing an impl and trait method signature, inferring any hidden `impl Trait` types in the process" }
270270
cache_on_disk_if { key.is_local() }

compiler/rustc_middle/src/query/on_disk_cache.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rustc_data_structures::memmap::Mmap;
33
use rustc_data_structures::stable_hasher::Hash64;
44
use rustc_data_structures::sync::{HashMapExt, Lock, Lrc, RwLock};
55
use rustc_data_structures::unhash::UnhashMap;
6-
use rustc_data_structures::unord::UnordSet;
6+
use rustc_data_structures::unord::{UnordMap, UnordSet};
77
use rustc_hir::def_id::{CrateNum, DefId, DefIndex, LocalDefId, StableCrateId, LOCAL_CRATE};
88
use rustc_hir::definitions::DefPathHash;
99
use rustc_index::{Idx, IndexVec};
@@ -771,7 +771,7 @@ impl<'a, 'tcx> Decodable<CacheDecoder<'a, 'tcx>> for &'tcx UnordSet<LocalDefId>
771771
}
772772

773773
impl<'a, 'tcx> Decodable<CacheDecoder<'a, 'tcx>>
774-
for &'tcx FxHashMap<DefId, ty::EarlyBinder<Ty<'tcx>>>
774+
for &'tcx UnordMap<DefId, ty::EarlyBinder<Ty<'tcx>>>
775775
{
776776
#[inline]
777777
fn decode(d: &mut CacheDecoder<'a, 'tcx>) -> Self {

compiler/rustc_middle/src/ty/parameterized.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use rustc_data_structures::fx::FxHashMap;
1+
use rustc_data_structures::unord::UnordMap;
22
use rustc_hir::def_id::DefIndex;
33
use rustc_index::{Idx, IndexVec};
4+
use std::hash::Hash;
45

56
use crate::ty;
67

@@ -24,8 +25,8 @@ impl<I: Idx + 'static, T: ParameterizedOverTcx> ParameterizedOverTcx for IndexVe
2425
type Value<'tcx> = IndexVec<I, T::Value<'tcx>>;
2526
}
2627

27-
impl<I: 'static, T: ParameterizedOverTcx> ParameterizedOverTcx for FxHashMap<I, T> {
28-
type Value<'tcx> = FxHashMap<I, T::Value<'tcx>>;
28+
impl<I: Hash + Eq + 'static, T: ParameterizedOverTcx> ParameterizedOverTcx for UnordMap<I, T> {
29+
type Value<'tcx> = UnordMap<I, T::Value<'tcx>>;
2930
}
3031

3132
impl<T: ParameterizedOverTcx> ParameterizedOverTcx for ty::Binder<'static, T> {

0 commit comments

Comments
 (0)