aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/display.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_ty/src/display.rs')
-rw-r--r--crates/hir_ty/src/display.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs
index b7e85e024..0a13c8636 100644
--- a/crates/hir_ty/src/display.rs
+++ b/crates/hir_ty/src/display.rs
@@ -11,10 +11,10 @@ use hir_def::{
11use hir_expand::name::Name; 11use hir_expand::name::Name;
12 12
13use crate::{ 13use crate::{
14 db::HirDatabase, from_assoc_type_id, from_foreign_def_id, primitive, to_assoc_type_id, 14 db::HirDatabase, from_assoc_type_id, from_foreign_def_id, from_placeholder_idx, primitive,
15 traits::chalk::from_chalk, utils::generics, AdtId, AliasTy, CallableDefId, CallableSig, 15 to_assoc_type_id, traits::chalk::from_chalk, utils::generics, AdtId, AliasTy, CallableDefId,
16 GenericPredicate, Interner, Lifetime, Obligation, OpaqueTy, OpaqueTyId, ProjectionTy, Scalar, 16 CallableSig, GenericPredicate, Interner, Lifetime, Obligation, OpaqueTy, OpaqueTyId,
17 Substs, TraitRef, Ty, TyKind, 17 ProjectionTy, Scalar, Substs, TraitRef, Ty, TyKind,
18}; 18};
19 19
20pub struct HirFormatter<'a> { 20pub struct HirFormatter<'a> {
@@ -541,7 +541,8 @@ impl HirDisplay for Ty {
541 write!(f, "{{closure}}")?; 541 write!(f, "{{closure}}")?;
542 } 542 }
543 } 543 }
544 TyKind::Placeholder(id) => { 544 TyKind::Placeholder(idx) => {
545 let id = from_placeholder_idx(f.db, *idx);
545 let generics = generics(f.db.upcast(), id.parent); 546 let generics = generics(f.db.upcast(), id.parent);
546 let param_data = &generics.params.types[id.local_id]; 547 let param_data = &generics.params.types[id.local_id];
547 match param_data.provenance { 548 match param_data.provenance {
@@ -549,8 +550,8 @@ impl HirDisplay for Ty {
549 write!(f, "{}", param_data.name.clone().unwrap_or_else(Name::missing))? 550 write!(f, "{}", param_data.name.clone().unwrap_or_else(Name::missing))?
550 } 551 }
551 TypeParamProvenance::ArgumentImplTrait => { 552 TypeParamProvenance::ArgumentImplTrait => {
552 let bounds = f.db.generic_predicates_for_param(*id); 553 let bounds = f.db.generic_predicates_for_param(id);
553 let substs = Substs::type_params_for_generics(&generics); 554 let substs = Substs::type_params_for_generics(f.db, &generics);
554 write_bounds_like_dyn_trait_with_prefix( 555 write_bounds_like_dyn_trait_with_prefix(
555 "impl", 556 "impl",
556 &bounds.iter().map(|b| b.clone().subst(&substs)).collect::<Vec<_>>(), 557 &bounds.iter().map(|b| b.clone().subst(&substs)).collect::<Vec<_>>(),