diff options
-rw-r--r-- | crates/ra_hir_ty/src/infer/expr.rs | 1 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/lib.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir_ty/src/lower.rs | 11 |
3 files changed, 8 insertions, 6 deletions
diff --git a/crates/ra_hir_ty/src/infer/expr.rs b/crates/ra_hir_ty/src/infer/expr.rs index 8b8378499..b32df8e90 100644 --- a/crates/ra_hir_ty/src/infer/expr.rs +++ b/crates/ra_hir_ty/src/infer/expr.rs | |||
@@ -587,6 +587,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
587 | self.write_method_resolution(tgt_expr, func); | 587 | self.write_method_resolution(tgt_expr, func); |
588 | (ty, self.db.value_ty(func.into()), Some(generics(self.db, func.into()))) | 588 | (ty, self.db.value_ty(func.into()), Some(generics(self.db, func.into()))) |
589 | } | 589 | } |
590 | // TODO fix this | ||
590 | None => (receiver_ty, Binders::new(0, Ty::Unknown), None), | 591 | None => (receiver_ty, Binders::new(0, Ty::Unknown), None), |
591 | }; | 592 | }; |
592 | let substs = self.substs_for_method_call(def_generics, generic_args, &derefed_receiver_ty); | 593 | let substs = self.substs_for_method_call(def_generics, generic_args, &derefed_receiver_ty); |
diff --git a/crates/ra_hir_ty/src/lib.rs b/crates/ra_hir_ty/src/lib.rs index 6eccd7fa8..1da4bcc19 100644 --- a/crates/ra_hir_ty/src/lib.rs +++ b/crates/ra_hir_ty/src/lib.rs | |||
@@ -288,10 +288,12 @@ pub enum Ty { | |||
288 | Projection(ProjectionTy), | 288 | Projection(ProjectionTy), |
289 | 289 | ||
290 | /// A type parameter; for example, `T` in `fn f<T>(x: T) {} | 290 | /// A type parameter; for example, `T` in `fn f<T>(x: T) {} |
291 | // TODO fix documentation | ||
291 | Param(TypeParamId), | 292 | Param(TypeParamId), |
292 | 293 | ||
293 | /// A bound type variable. Used during trait resolution to represent Chalk | 294 | /// A bound type variable. Used during trait resolution to represent Chalk |
294 | /// variables, and in `Dyn` and `Opaque` bounds to represent the `Self` type. | 295 | /// variables, and in `Dyn` and `Opaque` bounds to represent the `Self` type. |
296 | // TODO fix documentation | ||
295 | Bound(u32), | 297 | Bound(u32), |
296 | 298 | ||
297 | /// A type variable used during type checking. Not to be confused with a | 299 | /// A type variable used during type checking. Not to be confused with a |
diff --git a/crates/ra_hir_ty/src/lower.rs b/crates/ra_hir_ty/src/lower.rs index e375c4847..76e2fbabf 100644 --- a/crates/ra_hir_ty/src/lower.rs +++ b/crates/ra_hir_ty/src/lower.rs | |||
@@ -37,10 +37,9 @@ pub struct TyLoweringContext<'a, DB: HirDatabase> { | |||
37 | pub db: &'a DB, | 37 | pub db: &'a DB, |
38 | pub resolver: &'a Resolver, | 38 | pub resolver: &'a Resolver, |
39 | /// Note: Conceptually, it's thinkable that we could be in a location where | 39 | /// Note: Conceptually, it's thinkable that we could be in a location where |
40 | /// some type params are quantified universally (and should be represented | 40 | /// some type params should be represented as placeholders, and others |
41 | /// as placeholders), and others are quantified existentially (and should be | 41 | /// should be converted to variables. I think in practice, this isn't |
42 | /// converted to variables). I think in practice, this isn't possible | 42 | /// possible currently, so this should be fine for now. |
43 | /// currently, so this should be fine for now. | ||
44 | pub type_param_mode: TypeParamLoweringMode, | 43 | pub type_param_mode: TypeParamLoweringMode, |
45 | pub impl_trait_mode: ImplTraitLoweringMode, | 44 | pub impl_trait_mode: ImplTraitLoweringMode, |
46 | pub impl_trait_counter: std::cell::Cell<u16>, | 45 | pub impl_trait_counter: std::cell::Cell<u16>, |
@@ -71,8 +70,8 @@ pub enum ImplTraitLoweringMode { | |||
71 | /// types of functions we're calling. | 70 | /// types of functions we're calling. |
72 | Opaque, | 71 | Opaque, |
73 | /// `impl Trait` gets lowered into a type variable. Used for argument | 72 | /// `impl Trait` gets lowered into a type variable. Used for argument |
74 | /// position impl Trait currently, since it allows us to support that | 73 | /// position impl Trait when inside the respective function, since it allows |
75 | /// without Chalk. | 74 | /// us to support that without Chalk. |
76 | Param, | 75 | Param, |
77 | /// `impl Trait` gets lowered into a variable that can unify with some | 76 | /// `impl Trait` gets lowered into a variable that can unify with some |
78 | /// type. This is used in places where values flow 'in', i.e. for arguments | 77 | /// type. This is used in places where values flow 'in', i.e. for arguments |