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.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs
index ff8211094..f3a4333cb 100644
--- a/crates/hir_ty/src/display.rs
+++ b/crates/hir_ty/src/display.rs
@@ -3,8 +3,9 @@
3use std::{borrow::Cow, fmt}; 3use std::{borrow::Cow, fmt};
4 4
5use crate::{ 5use crate::{
6 db::HirDatabase, primitive, utils::generics, CallableDefId, CallableSig, GenericPredicate, 6 db::HirDatabase, primitive, utils::generics, AliasTy, CallableDefId, CallableSig,
7 Lifetime, Obligation, OpaqueTy, OpaqueTyId, ProjectionTy, Scalar, Substs, TraitRef, Ty, 7 GenericPredicate, Lifetime, Obligation, OpaqueTy, OpaqueTyId, ProjectionTy, Scalar, Substs,
8 TraitRef, Ty,
8}; 9};
9use arrayvec::ArrayVec; 10use arrayvec::ArrayVec;
10use hir_def::{ 11use hir_def::{
@@ -284,12 +285,12 @@ impl HirDisplay for Ty {
284 t.hir_fmt(f)?; 285 t.hir_fmt(f)?;
285 write!(f, "; _]")?; 286 write!(f, "; _]")?;
286 } 287 }
287 Ty::RawPtr(m, parameters) | Ty::Ref(m, parameters) => { 288 Ty::Raw(m, parameters) | Ty::Ref(m, parameters) => {
288 let t = parameters.as_single(); 289 let t = parameters.as_single();
289 let ty_display = 290 let ty_display =
290 t.into_displayable(f.db, f.max_size, f.omit_verbose_types, f.display_target); 291 t.into_displayable(f.db, f.max_size, f.omit_verbose_types, f.display_target);
291 292
292 if matches!(self, Ty::RawPtr(..)) { 293 if matches!(self, Ty::Raw(..)) {
293 write!(f, "*{}", m.as_keyword_for_ptr())?; 294 write!(f, "*{}", m.as_keyword_for_ptr())?;
294 } else { 295 } else {
295 write!(f, "&{}", m.as_keyword_for_ref())?; 296 write!(f, "&{}", m.as_keyword_for_ref())?;
@@ -300,10 +301,10 @@ impl HirDisplay for Ty {
300 Ty::Dyn(predicates) if predicates.len() > 1 => { 301 Ty::Dyn(predicates) if predicates.len() > 1 => {
301 Cow::Borrowed(predicates.as_ref()) 302 Cow::Borrowed(predicates.as_ref())
302 } 303 }
303 &Ty::Opaque(OpaqueTy { 304 &Ty::Alias(AliasTy::Opaque(OpaqueTy {
304 opaque_ty_id: OpaqueTyId::ReturnTypeImplTrait(func, idx), 305 opaque_ty_id: OpaqueTyId::ReturnTypeImplTrait(func, idx),
305 ref parameters, 306 ref parameters,
306 }) => { 307 })) => {
307 datas = 308 datas =
308 f.db.return_type_impl_traits(func).expect("impl trait id without data"); 309 f.db.return_type_impl_traits(func).expect("impl trait id without data");
309 let data = (*datas) 310 let data = (*datas)
@@ -518,7 +519,6 @@ impl HirDisplay for Ty {
518 write!(f, "{{closure}}")?; 519 write!(f, "{{closure}}")?;
519 } 520 }
520 } 521 }
521 Ty::Projection(p_ty) => p_ty.hir_fmt(f)?,
522 Ty::Placeholder(id) => { 522 Ty::Placeholder(id) => {
523 let generics = generics(f.db.upcast(), id.parent); 523 let generics = generics(f.db.upcast(), id.parent);
524 let param_data = &generics.params.types[id.local_id]; 524 let param_data = &generics.params.types[id.local_id];
@@ -537,11 +537,12 @@ impl HirDisplay for Ty {
537 } 537 }
538 } 538 }
539 } 539 }
540 Ty::Bound(idx) => write!(f, "?{}.{}", idx.debruijn.depth(), idx.index)?, 540 Ty::BoundVar(idx) => write!(f, "?{}.{}", idx.debruijn.depth(), idx.index)?,
541 Ty::Dyn(predicates) => { 541 Ty::Dyn(predicates) => {
542 write_bounds_like_dyn_trait_with_prefix("dyn", predicates, f)?; 542 write_bounds_like_dyn_trait_with_prefix("dyn", predicates, f)?;
543 } 543 }
544 Ty::Opaque(opaque_ty) => { 544 Ty::Alias(AliasTy::Projection(p_ty)) => p_ty.hir_fmt(f)?,
545 Ty::Alias(AliasTy::Opaque(opaque_ty)) => {
545 match opaque_ty.opaque_ty_id { 546 match opaque_ty.opaque_ty_id {
546 OpaqueTyId::ReturnTypeImplTrait(func, idx) => { 547 OpaqueTyId::ReturnTypeImplTrait(func, idx) => {
547 let datas = 548 let datas =