diff options
| author | Michael Goulet <michael@errs.io> | 2023-01-25 18:04:57 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-01-26 20:33:40 +0000 |
| commit | 4ff674f94237a1a21c7a1c1f6801bf751de41cdf (patch) | |
| tree | de72cf3e1022543c914407de1caaa7ef750743d7 /compiler/rustc_traits/src/chalk/mod.rs | |
| parent | c62665e09c11eb1c9d8ea02df5b723364a0b8ba4 (diff) | |
| download | rust-4ff674f94237a1a21c7a1c1f6801bf751de41cdf.tar.gz rust-4ff674f94237a1a21c7a1c1f6801bf751de41cdf.zip | |
Intern CanonicalVarValues
Diffstat (limited to 'compiler/rustc_traits/src/chalk/mod.rs')
| -rw-r--r-- | compiler/rustc_traits/src/chalk/mod.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/compiler/rustc_traits/src/chalk/mod.rs b/compiler/rustc_traits/src/chalk/mod.rs index f76386fa720..13d83b92689 100644 --- a/compiler/rustc_traits/src/chalk/mod.rs +++ b/compiler/rustc_traits/src/chalk/mod.rs @@ -8,13 +8,10 @@ pub(crate) mod lowering; use rustc_data_structures::fx::FxHashMap; -use rustc_index::vec::IndexVec; - use rustc_middle::infer::canonical::{CanonicalTyVarKind, CanonicalVarKind}; use rustc_middle::traits::ChalkRustInterner; use rustc_middle::ty::query::Providers; -use rustc_middle::ty::subst::GenericArg; -use rustc_middle::ty::{self, BoundVar, ParamTy, TyCtxt, TypeFoldable, TypeVisitable}; +use rustc_middle::ty::{self, ParamTy, TyCtxt, TypeFoldable, TypeVisitable}; use rustc_infer::infer::canonical::{ Canonical, CanonicalVarValues, Certainty, QueryRegionConstraints, QueryResponse, @@ -100,11 +97,13 @@ pub(crate) fn evaluate_goal<'tcx>( binders: chalk_ir::CanonicalVarKinds<_>| { use rustc_middle::infer::canonical::CanonicalVarInfo; - let mut var_values: IndexVec<BoundVar, GenericArg<'tcx>> = IndexVec::new(); let mut reverse_param_substitutor = ReverseParamsSubstitutor::new(tcx, params); - subst.as_slice(interner).iter().for_each(|p| { - var_values.push(p.lower_into(interner).fold_with(&mut reverse_param_substitutor)); - }); + let var_values = tcx.mk_substs( + subst + .as_slice(interner) + .iter() + .map(|p| p.lower_into(interner).fold_with(&mut reverse_param_substitutor)), + ); let variables: Vec<_> = binders .iter(interner) .map(|var| { @@ -159,8 +158,7 @@ pub(crate) fn evaluate_goal<'tcx>( max_universe: ty::UniverseIndex::from_usize(0), variables: obligation.variables, value: QueryResponse { - var_values: CanonicalVarValues { var_values: IndexVec::new() } - .make_identity(tcx), + var_values: CanonicalVarValues::dummy(), region_constraints: QueryRegionConstraints::default(), certainty: Certainty::Ambiguous, opaque_types: vec![], |
