Skip to content

Commit 2f47906

Browse files
committed
Deduplicate AliasTy visiting in IdCollector
1 parent e992137 commit 2f47906

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

chalk-solve/src/logging_db/id_collector.rs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@ impl<'i, I: Interner, DB: RustIrDatabase<I>> IdCollector<'i, I, DB> {
102102
fn record(&mut self, id: impl Into<RecordedItemId<I>>) {
103103
self.found_identifiers.insert(id.into());
104104
}
105+
106+
fn visit_alias(&mut self, alias: &AliasTy<I>) {
107+
match alias {
108+
AliasTy::Projection(projection_ty) => {
109+
let assoc_ty_datum = self.db.associated_ty_data(projection_ty.associated_ty_id);
110+
self.record(assoc_ty_datum.trait_id)
111+
}
112+
AliasTy::Opaque(opaque_ty) => self.record(opaque_ty.opaque_ty_id),
113+
}
114+
}
105115
}
106116

107117
impl<'i, I: Interner, DB: RustIrDatabase<I>> Visitor<'i, I> for IdCollector<'i, I, DB>
@@ -126,15 +136,7 @@ where
126136
TyKind::Adt(adt, _) => self.record(*adt),
127137
TyKind::FnDef(fn_def, _) => self.record(*fn_def),
128138
TyKind::OpaqueType(opaque, _) => self.record(*opaque),
129-
TyKind::Alias(alias) => match alias {
130-
AliasTy::Projection(projection_ty) => {
131-
let assoc_ty_datum = self.db.associated_ty_data(projection_ty.associated_ty_id);
132-
self.record(assoc_ty_datum.trait_id)
133-
}
134-
AliasTy::Opaque(opaque_ty) => {
135-
self.record(opaque_ty.opaque_ty_id);
136-
}
137-
},
139+
TyKind::Alias(alias) => self.visit_alias(&alias),
138140
TyKind::BoundVar(..) => (),
139141
TyKind::Dyn(..) => (),
140142
TyKind::Function(..) => (),
@@ -152,15 +154,7 @@ where
152154
) -> ControlFlow<()> {
153155
match where_clause {
154156
WhereClause::Implemented(trait_ref) => self.record(trait_ref.trait_id),
155-
WhereClause::AliasEq(alias_eq) => match &alias_eq.alias {
156-
AliasTy::Projection(projection_ty) => {
157-
let assoc_ty_datum = self.db.associated_ty_data(projection_ty.associated_ty_id);
158-
self.record(assoc_ty_datum.trait_id)
159-
}
160-
AliasTy::Opaque(opaque_ty) => {
161-
self.record(opaque_ty.opaque_ty_id);
162-
}
163-
},
157+
WhereClause::AliasEq(alias_eq) => self.visit_alias(&alias_eq.alias),
164158
WhereClause::LifetimeOutlives(_lifetime_outlives) => (),
165159
WhereClause::TypeOutlives(_type_outlives) => (),
166160
}

0 commit comments

Comments
 (0)