aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/hir_ty/src/chalk_ext.rs14
1 files changed, 4 insertions, 10 deletions
diff --git a/crates/hir_ty/src/chalk_ext.rs b/crates/hir_ty/src/chalk_ext.rs
index b101e904f..8e8a1aa48 100644
--- a/crates/hir_ty/src/chalk_ext.rs
+++ b/crates/hir_ty/src/chalk_ext.rs
@@ -29,9 +29,6 @@ pub trait TyExt {
29 29
30 fn strip_references(&self) -> &Ty; 30 fn strip_references(&self) -> &Ty;
31 31
32 /// If this is a `dyn Trait` type, this returns the `Trait` part.
33 fn dyn_trait_ref(&self) -> Option<&TraitRef>;
34
35 /// If this is a `dyn Trait`, returns that trait. 32 /// If this is a `dyn Trait`, returns that trait.
36 fn dyn_trait(&self) -> Option<TraitId>; 33 fn dyn_trait(&self) -> Option<TraitId>;
37 34
@@ -123,8 +120,8 @@ impl TyExt for Ty {
123 } 120 }
124 } 121 }
125 122
126 fn dyn_trait_ref(&self) -> Option<&TraitRef> { 123 fn dyn_trait(&self) -> Option<TraitId> {
127 match self.kind(&Interner) { 124 let trait_ref = match self.kind(&Interner) {
128 TyKind::Dyn(dyn_ty) => dyn_ty.bounds.skip_binders().interned().get(0).and_then(|b| { 125 TyKind::Dyn(dyn_ty) => dyn_ty.bounds.skip_binders().interned().get(0).and_then(|b| {
129 match b.skip_binders() { 126 match b.skip_binders() {
130 WhereClause::Implemented(trait_ref) => Some(trait_ref), 127 WhereClause::Implemented(trait_ref) => Some(trait_ref),
@@ -132,11 +129,8 @@ impl TyExt for Ty {
132 } 129 }
133 }), 130 }),
134 _ => None, 131 _ => None,
135 } 132 }?;
136 } 133 Some(from_chalk_trait_id(trait_ref.trait_id))
137
138 fn dyn_trait(&self) -> Option<TraitId> {
139 self.dyn_trait_ref().map(|it| it.trait_id).map(from_chalk_trait_id)
140 } 134 }
141 135
142 fn strip_references(&self) -> &Ty { 136 fn strip_references(&self) -> &Ty {