InEnvironment::new takes a reference
This commit is contained in:
parent
d1b645d236
commit
be0084a0bc
@ -1791,7 +1791,7 @@ pub fn impls_trait(&self, db: &dyn HirDatabase, trait_: Trait, args: &[Type]) ->
|
||||
.build();
|
||||
|
||||
let goal = Canonical {
|
||||
value: hir_ty::InEnvironment::new(self.env.env.clone(), trait_ref.cast(&Interner)),
|
||||
value: hir_ty::InEnvironment::new(&self.env.env, trait_ref.cast(&Interner)),
|
||||
binders: CanonicalVarKinds::empty(&Interner),
|
||||
};
|
||||
|
||||
@ -1810,7 +1810,7 @@ pub fn normalize_trait_assoc_type(
|
||||
.build();
|
||||
let goal = hir_ty::make_canonical(
|
||||
InEnvironment::new(
|
||||
self.env.env.clone(),
|
||||
&self.env.env,
|
||||
AliasEq {
|
||||
alias: AliasTy::Projection(projection),
|
||||
ty: TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0))
|
||||
|
@ -336,7 +336,7 @@ fn resolve_obligations_as_possible(&mut self) {
|
||||
self.last_obligations_check = Some(self.table.revision);
|
||||
let obligations = mem::replace(&mut self.obligations, Vec::new());
|
||||
for obligation in obligations {
|
||||
let in_env = InEnvironment::new(self.trait_env.env.clone(), obligation.clone());
|
||||
let in_env = InEnvironment::new(&self.trait_env.env, obligation.clone());
|
||||
let canonicalized = self.canonicalizer().canonicalize_obligation(in_env);
|
||||
let solution =
|
||||
self.db.trait_solve(self.resolver.krate().unwrap(), canonicalized.value.clone());
|
||||
|
@ -139,7 +139,7 @@ fn try_coerce_unsized(&mut self, from_ty: &Ty, to_ty: &Ty) -> Option<bool> {
|
||||
b.push(from_ty.clone()).push(to_ty.clone()).build()
|
||||
};
|
||||
|
||||
let goal = InEnvironment::new(self.trait_env.env.clone(), trait_ref.cast(&Interner));
|
||||
let goal = InEnvironment::new(&self.trait_env.env, trait_ref.cast(&Interner));
|
||||
|
||||
let canonicalizer = self.canonicalizer();
|
||||
let canonicalized = canonicalizer.canonicalize_obligation(goal);
|
||||
|
@ -845,7 +845,7 @@ fn generic_implements_goal(
|
||||
let obligation = trait_ref.cast(&Interner);
|
||||
Canonical {
|
||||
binders: CanonicalVarKinds::from_iter(&Interner, kinds),
|
||||
value: InEnvironment::new(env.env.clone(), obligation),
|
||||
value: InEnvironment::new(&env.env, obligation),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -470,8 +470,8 @@ pub struct InEnvironment<T> {
|
||||
}
|
||||
|
||||
impl<T> InEnvironment<T> {
|
||||
pub fn new(environment: chalk_ir::Environment<Interner>, value: T) -> InEnvironment<T> {
|
||||
InEnvironment { environment, goal: value }
|
||||
pub fn new(environment: &chalk_ir::Environment<Interner>, value: T) -> InEnvironment<T> {
|
||||
InEnvironment { environment: environment.clone(), goal: value }
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user