diff options
Diffstat (limited to 'crates/hir_ty/src/lower.rs')
-rw-r--r-- | crates/hir_ty/src/lower.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index 462882b2b..5d950a017 100644 --- a/crates/hir_ty/src/lower.rs +++ b/crates/hir_ty/src/lower.rs | |||
@@ -27,7 +27,7 @@ use stdx::impl_from; | |||
27 | 27 | ||
28 | use crate::{ | 28 | use crate::{ |
29 | db::HirDatabase, | 29 | db::HirDatabase, |
30 | to_assoc_type_id, to_placeholder_idx, | 30 | to_assoc_type_id, to_chalk_trait_id, to_placeholder_idx, |
31 | traits::chalk::{Interner, ToChalk}, | 31 | traits::chalk::{Interner, ToChalk}, |
32 | utils::{ | 32 | utils::{ |
33 | all_super_trait_refs, associated_type_by_name_including_super_traits, generics, | 33 | all_super_trait_refs, associated_type_by_name_including_super_traits, generics, |
@@ -360,7 +360,7 @@ impl<'a> TyLoweringContext<'a> { | |||
360 | // FIXME handle type parameters on the segment | 360 | // FIXME handle type parameters on the segment |
361 | TyKind::Alias(AliasTy::Projection(ProjectionTy { | 361 | TyKind::Alias(AliasTy::Projection(ProjectionTy { |
362 | associated_ty_id: to_assoc_type_id(associated_ty), | 362 | associated_ty_id: to_assoc_type_id(associated_ty), |
363 | substitution: super_trait_ref.substs, | 363 | substitution: super_trait_ref.substitution, |
364 | })) | 364 | })) |
365 | .intern(&Interner) | 365 | .intern(&Interner) |
366 | } | 366 | } |
@@ -470,9 +470,9 @@ impl<'a> TyLoweringContext<'a> { | |||
470 | "there should be generics if there's a generic param", | 470 | "there should be generics if there's a generic param", |
471 | ), | 471 | ), |
472 | ); | 472 | ); |
473 | t.substs.clone().subst_bound_vars(&s) | 473 | t.substitution.clone().subst_bound_vars(&s) |
474 | } | 474 | } |
475 | TypeParamLoweringMode::Variable => t.substs.clone(), | 475 | TypeParamLoweringMode::Variable => t.substitution.clone(), |
476 | }; | 476 | }; |
477 | // We need to shift in the bound vars, since | 477 | // We need to shift in the bound vars, since |
478 | // associated_type_shorthand_candidates does not do that | 478 | // associated_type_shorthand_candidates does not do that |
@@ -641,7 +641,7 @@ impl<'a> TyLoweringContext<'a> { | |||
641 | if let Some(self_ty) = explicit_self_ty { | 641 | if let Some(self_ty) = explicit_self_ty { |
642 | substs.0[0] = self_ty; | 642 | substs.0[0] = self_ty; |
643 | } | 643 | } |
644 | TraitRef { trait_: resolved, substs } | 644 | TraitRef { trait_id: to_chalk_trait_id(resolved), substitution: substs } |
645 | } | 645 | } |
646 | 646 | ||
647 | fn lower_trait_ref( | 647 | fn lower_trait_ref( |
@@ -743,7 +743,7 @@ impl<'a> TyLoweringContext<'a> { | |||
743 | }; | 743 | }; |
744 | let projection_ty = ProjectionTy { | 744 | let projection_ty = ProjectionTy { |
745 | associated_ty_id: to_assoc_type_id(associated_ty), | 745 | associated_ty_id: to_assoc_type_id(associated_ty), |
746 | substitution: super_trait_ref.substs, | 746 | substitution: super_trait_ref.substitution, |
747 | }; | 747 | }; |
748 | let mut preds = SmallVec::with_capacity( | 748 | let mut preds = SmallVec::with_capacity( |
749 | binding.type_ref.as_ref().map_or(0, |_| 1) + binding.bounds.len(), | 749 | binding.type_ref.as_ref().map_or(0, |_| 1) + binding.bounds.len(), |
@@ -820,8 +820,8 @@ pub fn associated_type_shorthand_candidates<R>( | |||
820 | == TypeParamProvenance::TraitSelf | 820 | == TypeParamProvenance::TraitSelf |
821 | { | 821 | { |
822 | let trait_ref = TraitRef { | 822 | let trait_ref = TraitRef { |
823 | trait_: trait_id, | 823 | trait_id: to_chalk_trait_id(trait_id), |
824 | substs: Substitution::bound_vars(&generics, DebruijnIndex::INNERMOST), | 824 | substitution: Substitution::bound_vars(&generics, DebruijnIndex::INNERMOST), |
825 | }; | 825 | }; |
826 | traits_.push(trait_ref); | 826 | traits_.push(trait_ref); |
827 | } | 827 | } |
@@ -832,7 +832,7 @@ pub fn associated_type_shorthand_candidates<R>( | |||
832 | }; | 832 | }; |
833 | 833 | ||
834 | for t in traits_from_env.into_iter().flat_map(move |t| all_super_trait_refs(db, t)) { | 834 | for t in traits_from_env.into_iter().flat_map(move |t| all_super_trait_refs(db, t)) { |
835 | let data = db.trait_data(t.trait_); | 835 | let data = db.trait_data(t.hir_trait_id()); |
836 | 836 | ||
837 | for (name, assoc_id) in &data.items { | 837 | for (name, assoc_id) in &data.items { |
838 | match assoc_id { | 838 | match assoc_id { |
@@ -926,7 +926,7 @@ pub(crate) fn trait_environment_query( | |||
926 | continue; | 926 | continue; |
927 | } | 927 | } |
928 | if let GenericPredicate::Implemented(tr) = &pred { | 928 | if let GenericPredicate::Implemented(tr) = &pred { |
929 | traits_in_scope.push((tr.self_ty().clone(), tr.trait_)); | 929 | traits_in_scope.push((tr.self_type_parameter().clone(), tr.hir_trait_id())); |
930 | } | 930 | } |
931 | let program_clause: chalk_ir::ProgramClause<Interner> = | 931 | let program_clause: chalk_ir::ProgramClause<Interner> = |
932 | pred.clone().to_chalk(db).cast(&Interner); | 932 | pred.clone().to_chalk(db).cast(&Interner); |
@@ -950,7 +950,7 @@ pub(crate) fn trait_environment_query( | |||
950 | // inside consts or type aliases) | 950 | // inside consts or type aliases) |
951 | cov_mark::hit!(trait_self_implements_self); | 951 | cov_mark::hit!(trait_self_implements_self); |
952 | let substs = Substitution::type_params(db, trait_id); | 952 | let substs = Substitution::type_params(db, trait_id); |
953 | let trait_ref = TraitRef { trait_: trait_id, substs }; | 953 | let trait_ref = TraitRef { trait_id: to_chalk_trait_id(trait_id), substitution: substs }; |
954 | let pred = GenericPredicate::Implemented(trait_ref); | 954 | let pred = GenericPredicate::Implemented(trait_ref); |
955 | let program_clause: chalk_ir::ProgramClause<Interner> = | 955 | let program_clause: chalk_ir::ProgramClause<Interner> = |
956 | pred.clone().to_chalk(db).cast(&Interner); | 956 | pred.clone().to_chalk(db).cast(&Interner); |