fn push_clauses_for_compatible_normalize<I: Interner>(
db: &dyn RustIrDatabase<I>,
builder: &mut ClauseBuilder<'_, I>,
interner: I,
trait_id: TraitId<I>,
associated_ty_id: AssocTypeId<I>,
)
Expand description
Adds clauses to allow normalizing possible downstream associated type implementations when in the “compatible” mode. Example clauses:
for<type, type, type> Normalize(<^0.0 as Trait<^0.1>>::Item -> ^0.2)
:- Compatible, Implemented(^0.0: Trait<^0.1>), DownstreamType(^0.1), CannotProve
for<type, type, type> Normalize(<^0.0 as Trait<^0.1>>::Item -> ^0.2)
:- Compatible, Implemented(^0.0: Trait<^0.1>), IsFullyVisible(^0.0), DownstreamType(^0.1), CannotProve