From 86feac18e8f96a99830defd707eb221f12d02924 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Wed, 7 Apr 2021 20:26:27 +0200 Subject: Change TraitRef::hir_fmt_ext to free-standing function --- crates/hir_ty/src/display.rs | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) (limited to 'crates/hir_ty/src/display.rs') diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index 9e6bbcdf1..266016786 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs @@ -792,31 +792,29 @@ fn write_bounds_like_dyn_trait( Ok(()) } -impl TraitRef { - fn hir_fmt_ext(&self, f: &mut HirFormatter, use_as: bool) -> Result<(), HirDisplayError> { - if f.should_truncate() { - return write!(f, "{}", TYPE_HINT_TRUNCATION); - } +fn fmt_trait_ref(tr: &TraitRef, f: &mut HirFormatter, use_as: bool) -> Result<(), HirDisplayError> { + if f.should_truncate() { + return write!(f, "{}", TYPE_HINT_TRUNCATION); + } - self.self_type_parameter(&Interner).hir_fmt(f)?; - if use_as { - write!(f, " as ")?; - } else { - write!(f, ": ")?; - } - write!(f, "{}", f.db.trait_data(self.hir_trait_id()).name)?; - if self.substitution.len(&Interner) > 1 { - write!(f, "<")?; - f.write_joined(&self.substitution.interned()[1..], ", ")?; - write!(f, ">")?; - } - Ok(()) + tr.self_type_parameter(&Interner).hir_fmt(f)?; + if use_as { + write!(f, " as ")?; + } else { + write!(f, ": ")?; } + write!(f, "{}", f.db.trait_data(tr.hir_trait_id()).name)?; + if tr.substitution.len(&Interner) > 1 { + write!(f, "<")?; + f.write_joined(&tr.substitution.interned()[1..], ", ")?; + write!(f, ">")?; + } + Ok(()) } impl HirDisplay for TraitRef { fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> { - self.hir_fmt_ext(f, false) + fmt_trait_ref(self, f, false) } } @@ -830,7 +828,7 @@ impl HirDisplay for WhereClause { WhereClause::Implemented(trait_ref) => trait_ref.hir_fmt(f)?, WhereClause::AliasEq(AliasEq { alias: AliasTy::Projection(projection_ty), ty }) => { write!(f, "<")?; - projection_ty.trait_ref(f.db).hir_fmt_ext(f, true)?; + fmt_trait_ref(&projection_ty.trait_ref(f.db), f, true)?; write!( f, ">::{} = ", -- cgit v1.2.3 From 6777a4975d6a88928fda3e3b3f0bb05d98c61060 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Wed, 7 Apr 2021 20:40:01 +0200 Subject: Move hir_trait_id to extension trait --- crates/hir_ty/src/display.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/hir_ty/src/display.rs') diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index 266016786..52c2d6347 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs @@ -24,7 +24,7 @@ use crate::{ traits::chalk::from_chalk, utils::generics, AdtId, AliasEq, AliasTy, CallableDefId, CallableSig, Const, ConstValue, DomainGoal, GenericArg, ImplTraitId, Interner, Lifetime, LifetimeData, LifetimeOutlives, Mutability, OpaqueTy, ProjectionTy, ProjectionTyExt, - QuantifiedWhereClause, Scalar, TraitRef, Ty, TyExt, TyKind, WhereClause, + QuantifiedWhereClause, Scalar, TraitRef, TraitRefExt, Ty, TyExt, TyKind, WhereClause, }; pub struct HirFormatter<'a> { -- cgit v1.2.3 From 9b4ecd3723c0184706d1276759846ebf3fdff944 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Wed, 7 Apr 2021 20:41:52 +0200 Subject: Fix return type of `self_type_parameter` --- crates/hir_ty/src/display.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/hir_ty/src/display.rs') diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index 52c2d6347..90801ef2d 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs @@ -616,12 +616,12 @@ impl HirDisplay for Ty { .map(|pred| pred.clone().substitute(&Interner, &substs)) .filter(|wc| match &wc.skip_binders() { WhereClause::Implemented(tr) => { - tr.self_type_parameter(&Interner) == self + &tr.self_type_parameter(&Interner) == self } WhereClause::AliasEq(AliasEq { alias: AliasTy::Projection(proj), ty: _, - }) => proj.self_type_parameter(&Interner) == self, + }) => &proj.self_type_parameter(&Interner) == self, _ => false, }) .collect::>(); -- cgit v1.2.3 From dc116f7ce2192433c9491441a11d294e7d294fbf Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Wed, 7 Apr 2021 20:50:26 +0200 Subject: Fix return type of Substitution::interned --- crates/hir_ty/src/display.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/hir_ty/src/display.rs') diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index 90801ef2d..e0ca96c6d 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs @@ -745,7 +745,7 @@ fn write_bounds_like_dyn_trait( // existential) here, which is the only thing that's // possible in actual Rust, and hence don't print it write!(f, "{}", f.db.trait_data(trait_).name)?; - if let [_, params @ ..] = &*trait_ref.substitution.interned() { + if let [_, params @ ..] = &*trait_ref.substitution.interned().as_slice() { if is_fn_trait { if let Some(args) = params.first().and_then(|it| it.assert_ty_ref(&Interner).as_tuple()) -- cgit v1.2.3