From 788533d38091472ed05c8b55fd7a2002c49f4eb7 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Mon, 5 Apr 2021 21:14:49 +0200 Subject: Move ProjectionTy methods to extension trait --- crates/hir_ty/src/infer/expr.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/hir_ty/src/infer') diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 6966d26e7..56a9365cb 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs @@ -22,8 +22,8 @@ use crate::{ to_chalk_trait_id, traits::{chalk::from_chalk, FnTrait}, utils::{generics, variant_data, Generics}, - AdtId, Binders, CallableDefId, FnPointer, FnSig, InEnvironment, Interner, Rawness, Scalar, - Substitution, TraitRef, Ty, TyBuilder, TyKind, + AdtId, Binders, CallableDefId, FnPointer, FnSig, InEnvironment, Interner, ProjectionTyExt, + Rawness, Scalar, Substitution, TraitRef, Ty, TyBuilder, TyKind, }; use super::{ -- cgit v1.2.3 From 2f5a77658baafad1fe3551971ebbcdce87760847 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Mon, 5 Apr 2021 21:17:35 +0200 Subject: Substitution::single -> from1 --- crates/hir_ty/src/infer/expr.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'crates/hir_ty/src/infer') diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 56a9365cb..82ab9c5fe 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs @@ -180,7 +180,8 @@ impl<'a> InferenceContext<'a> { let inner_ty = self.infer_expr(*body, &Expectation::none()); let impl_trait_id = crate::ImplTraitId::AsyncBlockTypeImplTrait(self.owner, *body); let opaque_ty_id = self.db.intern_impl_trait_id(impl_trait_id).into(); - TyKind::OpaqueType(opaque_ty_id, Substitution::single(inner_ty)).intern(&Interner) + TyKind::OpaqueType(opaque_ty_id, Substitution::from1(&Interner, inner_ty)) + .intern(&Interner) } Expr::Loop { body, label } => { self.breakables.push(BreakableContext { @@ -266,7 +267,8 @@ impl<'a> InferenceContext<'a> { .intern(&Interner); let closure_id = self.db.intern_closure((self.owner, tgt_expr)).into(); let closure_ty = - TyKind::Closure(closure_id, Substitution::single(sig_ty)).intern(&Interner); + TyKind::Closure(closure_id, Substitution::from1(&Interner, sig_ty)) + .intern(&Interner); // Eagerly try to relate the closure type with the expected // type, otherwise we often won't have enough information to -- cgit v1.2.3 From b67148daea86d85d211c4243f22635d6ac7e1983 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Mon, 5 Apr 2021 21:56:40 +0200 Subject: Substitution::prefix -> subst_prefix I probably want to get rid of this function completely later. --- crates/hir_ty/src/infer/expr.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'crates/hir_ty/src/infer') diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 82ab9c5fe..185a2dfc3 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs @@ -964,8 +964,10 @@ impl<'a> InferenceContext<'a> { if let AssocContainerId::TraitId(trait_) = f.lookup(self.db.upcast()).container { // construct a TraitRef - let substs = - parameters.prefix(generics(self.db.upcast(), trait_.into()).len()); + let substs = crate::subst_prefix( + &*parameters, + generics(self.db.upcast(), trait_.into()).len(), + ); self.push_obligation( TraitRef { trait_id: to_chalk_trait_id(trait_), substitution: substs } .cast(&Interner), -- cgit v1.2.3