aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/infer/path.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_ty/src/infer/path.rs')
-rw-r--r--crates/ra_hir_ty/src/infer/path.rs29
1 files changed, 24 insertions, 5 deletions
diff --git a/crates/ra_hir_ty/src/infer/path.rs b/crates/ra_hir_ty/src/infer/path.rs
index 132f3d6f2..02fc99288 100644
--- a/crates/ra_hir_ty/src/infer/path.rs
+++ b/crates/ra_hir_ty/src/infer/path.rs
@@ -9,7 +9,10 @@ use hir_def::{
9}; 9};
10use hir_expand::name::Name; 10use hir_expand::name::Name;
11 11
12use crate::{db::HirDatabase, method_resolution, Substs, Ty, TypeWalk, ValueTyDefId}; 12use crate::{
13 db::HirDatabase, lower::ImplTraitLoweringMode, method_resolution, Substs, Ty, TypeWalk,
14 ValueTyDefId,
15};
13 16
14use super::{ExprOrPatId, InferenceContext, TraitRef}; 17use super::{ExprOrPatId, InferenceContext, TraitRef};
15 18
@@ -39,7 +42,11 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
39 } 42 }
40 let ty = self.make_ty(type_ref); 43 let ty = self.make_ty(type_ref);
41 let remaining_segments_for_ty = path.segments().take(path.segments().len() - 1); 44 let remaining_segments_for_ty = path.segments().take(path.segments().len() - 1);
42 let ctx = crate::lower::TyLoweringContext { db: self.db, resolver: &resolver }; 45 let ctx = crate::lower::TyLoweringContext {
46 db: self.db,
47 resolver: &resolver,
48 impl_trait_mode: ImplTraitLoweringMode::Disallowed,
49 };
43 let ty = Ty::from_type_relative_path(&ctx, ty, remaining_segments_for_ty); 50 let ty = Ty::from_type_relative_path(&ctx, ty, remaining_segments_for_ty);
44 self.resolve_ty_assoc_item( 51 self.resolve_ty_assoc_item(
45 ty, 52 ty,
@@ -74,7 +81,11 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
74 if let Some(self_subst) = self_subst { 81 if let Some(self_subst) = self_subst {
75 ty = ty.subst(&self_subst); 82 ty = ty.subst(&self_subst);
76 } 83 }
77 let ctx = crate::lower::TyLoweringContext { db: self.db, resolver: &self.resolver }; 84 let ctx = crate::lower::TyLoweringContext {
85 db: self.db,
86 resolver: &self.resolver,
87 impl_trait_mode: ImplTraitLoweringMode::Disallowed,
88 };
78 let substs = Ty::substs_from_path(&ctx, path, typable); 89 let substs = Ty::substs_from_path(&ctx, path, typable);
79 let ty = ty.subst(&substs); 90 let ty = ty.subst(&substs);
80 Some(ty) 91 Some(ty)
@@ -100,7 +111,11 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
100 (TypeNs::TraitId(trait_), true) => { 111 (TypeNs::TraitId(trait_), true) => {
101 let segment = 112 let segment =
102 remaining_segments.last().expect("there should be at least one segment here"); 113 remaining_segments.last().expect("there should be at least one segment here");
103 let ctx = crate::lower::TyLoweringContext { db: self.db, resolver: &self.resolver }; 114 let ctx = crate::lower::TyLoweringContext {
115 db: self.db,
116 resolver: &self.resolver,
117 impl_trait_mode: ImplTraitLoweringMode::Disallowed,
118 };
104 let trait_ref = 119 let trait_ref =
105 TraitRef::from_resolved_path(&ctx, trait_.into(), resolved_segment, None); 120 TraitRef::from_resolved_path(&ctx, trait_.into(), resolved_segment, None);
106 self.resolve_trait_assoc_item(trait_ref, segment, id) 121 self.resolve_trait_assoc_item(trait_ref, segment, id)
@@ -112,7 +127,11 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
112 // as Iterator>::Item::default`) 127 // as Iterator>::Item::default`)
113 let remaining_segments_for_ty = 128 let remaining_segments_for_ty =
114 remaining_segments.take(remaining_segments.len() - 1); 129 remaining_segments.take(remaining_segments.len() - 1);
115 let ctx = crate::lower::TyLoweringContext { db: self.db, resolver: &self.resolver }; 130 let ctx = crate::lower::TyLoweringContext {
131 db: self.db,
132 resolver: &self.resolver,
133 impl_trait_mode: ImplTraitLoweringMode::Disallowed,
134 };
116 let ty = Ty::from_partly_resolved_hir_path( 135 let ty = Ty::from_partly_resolved_hir_path(
117 &ctx, 136 &ctx,
118 def, 137 def,