Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/builtin_derive.rs')
-rw-r--r--crates/hir-ty/src/builtin_derive.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/crates/hir-ty/src/builtin_derive.rs b/crates/hir-ty/src/builtin_derive.rs
index 73c0313823..fe60fbc510 100644
--- a/crates/hir-ty/src/builtin_derive.rs
+++ b/crates/hir-ty/src/builtin_derive.rs
@@ -21,7 +21,8 @@ use crate::{
db::HirDatabase,
next_solver::{
AliasTy, Clause, Clauses, DbInterner, EarlyBinder, GenericArgs, ParamEnv,
- StoredEarlyBinder, StoredTy, TraitRef, Ty, TyKind, fold::fold_tys, generics::Generics,
+ StoredEarlyBinder, StoredTy, TraitRef, Ty, TyKind, Unnormalized, fold::fold_tys,
+ generics::Generics,
},
};
@@ -197,6 +198,7 @@ pub fn predicates(db: &dyn HirDatabase, impl_: BuiltinDeriveImplId) -> GenericPr
};
let duplicated_bounds =
adt_predicates.explicit_predicates().iter_identity().filter_map(|pred| {
+ let pred = pred.skip_norm_wip();
let mentions_pointee =
pred.visit_with(&mut MentionsPointee { pointee_param_idx }).is_break();
if !mentions_pointee {
@@ -218,6 +220,7 @@ pub fn predicates(db: &dyn HirDatabase, impl_: BuiltinDeriveImplId) -> GenericPr
adt_predicates
.explicit_predicates()
.iter_identity()
+ .map(Unnormalized::skip_norm_wip)
.chain(duplicated_bounds)
.chain(unsize_bound),
)
@@ -319,6 +322,7 @@ fn simple_trait_predicates<'db>(
adt_predicates
.explicit_predicates()
.iter_identity()
+ .map(Unnormalized::skip_norm_wip)
.chain(extra_predicates)
.chain(assoc_type_bounds),
)
@@ -361,7 +365,7 @@ fn extend_assoc_type_bounds<'db>(
let mut visitor = ProjectionFinder { interner, assoc_type_bounds, trait_id, trait_ };
for (_, field) in fields.iter() {
- field.get().instantiate_identity().visit_with(&mut visitor);
+ field.get().instantiate_identity().skip_norm_wip().visit_with(&mut visitor);
}
}