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