diff options
Diffstat (limited to 'crates/ra_hir_ty/src/lower.rs')
-rw-r--r-- | crates/ra_hir_ty/src/lower.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/crates/ra_hir_ty/src/lower.rs b/crates/ra_hir_ty/src/lower.rs index dfc018b0b..a05cbd7fc 100644 --- a/crates/ra_hir_ty/src/lower.rs +++ b/crates/ra_hir_ty/src/lower.rs | |||
@@ -21,8 +21,10 @@ use hir_def::{ | |||
21 | HasModule, ImplId, LocalFieldId, Lookup, StaticId, StructId, TraitId, TypeAliasId, TypeParamId, | 21 | HasModule, ImplId, LocalFieldId, Lookup, StaticId, StructId, TraitId, TypeAliasId, TypeParamId, |
22 | UnionId, VariantId, | 22 | UnionId, VariantId, |
23 | }; | 23 | }; |
24 | use hir_expand::name::Name; | ||
24 | use ra_arena::map::ArenaMap; | 25 | use ra_arena::map::ArenaMap; |
25 | use ra_db::CrateId; | 26 | use ra_db::CrateId; |
27 | use test_utils::mark; | ||
26 | 28 | ||
27 | use crate::{ | 29 | use crate::{ |
28 | db::HirDatabase, | 30 | db::HirDatabase, |
@@ -35,7 +37,6 @@ use crate::{ | |||
35 | ProjectionPredicate, ProjectionTy, ReturnTypeImplTrait, ReturnTypeImplTraits, Substs, | 37 | ProjectionPredicate, ProjectionTy, ReturnTypeImplTrait, ReturnTypeImplTraits, Substs, |
36 | TraitEnvironment, TraitRef, Ty, TypeCtor, TypeWalk, | 38 | TraitEnvironment, TraitRef, Ty, TypeCtor, TypeWalk, |
37 | }; | 39 | }; |
38 | use hir_expand::name::Name; | ||
39 | 40 | ||
40 | #[derive(Debug)] | 41 | #[derive(Debug)] |
41 | pub struct TyLoweringContext<'a> { | 42 | pub struct TyLoweringContext<'a> { |
@@ -220,10 +221,7 @@ impl Ty { | |||
220 | 221 | ||
221 | let func = match ctx.resolver.generic_def() { | 222 | let func = match ctx.resolver.generic_def() { |
222 | Some(GenericDefId::FunctionId(f)) => f, | 223 | Some(GenericDefId::FunctionId(f)) => f, |
223 | _ => { | 224 | _ => panic!("opaque impl trait lowering in non-function"), |
224 | // this shouldn't happen | ||
225 | return (Ty::Unknown, None); | ||
226 | } | ||
227 | }; | 225 | }; |
228 | let impl_trait_id = OpaqueTyId::ReturnTypeImplTrait(func, idx); | 226 | let impl_trait_id = OpaqueTyId::ReturnTypeImplTrait(func, idx); |
229 | let generics = generics(ctx.db.upcast(), func.into()); | 227 | let generics = generics(ctx.db.upcast(), func.into()); |
@@ -719,6 +717,7 @@ fn assoc_type_bindings_from_type_bound<'a>( | |||
719 | 717 | ||
720 | impl ReturnTypeImplTrait { | 718 | impl ReturnTypeImplTrait { |
721 | fn from_hir(ctx: &TyLoweringContext, bounds: &[TypeBound]) -> Self { | 719 | fn from_hir(ctx: &TyLoweringContext, bounds: &[TypeBound]) -> Self { |
720 | mark::hit!(lower_rpit); | ||
722 | let self_ty = Ty::Bound(BoundVar::new(DebruijnIndex::INNERMOST, 0)); | 721 | let self_ty = Ty::Bound(BoundVar::new(DebruijnIndex::INNERMOST, 0)); |
723 | let predicates = ctx.with_shifted_in(DebruijnIndex::ONE, |ctx| { | 722 | let predicates = ctx.with_shifted_in(DebruijnIndex::ONE, |ctx| { |
724 | bounds | 723 | bounds |