Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/util.rs')
-rw-r--r--crates/hir-ty/src/next_solver/util.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/crates/hir-ty/src/next_solver/util.rs b/crates/hir-ty/src/next_solver/util.rs
index 34ecfed08f..9a1b476976 100644
--- a/crates/hir-ty/src/next_solver/util.rs
+++ b/crates/hir-ty/src/next_solver/util.rs
@@ -455,6 +455,21 @@ pub fn explicit_item_bounds<'db>(
clauses.map_bound(|clauses| clauses.iter().copied())
}
+pub fn explicit_item_self_bounds<'db>(
+ interner: DbInterner<'db>,
+ def_id: SolverDefId,
+) -> EarlyBinder<'db, impl DoubleEndedIterator<Item = Clause<'db>> + ExactSizeIterator> {
+ let db = interner.db();
+ let clauses = match def_id {
+ SolverDefId::TypeAliasId(type_alias) => {
+ crate::lower::type_alias_self_bounds(db, type_alias)
+ }
+ SolverDefId::InternedOpaqueTyId(id) => id.self_predicates(db),
+ _ => panic!("Unexpected GenericDefId"),
+ };
+ clauses.map_bound(|clauses| clauses.iter().copied())
+}
+
pub struct ContainsTypeErrors;
impl<'db> TypeVisitor<DbInterner<'db>> for ContainsTypeErrors {