fn fully_visible_program_clauses<I>(
    builder: &mut ClauseBuilder<'_, I>,
    ty: Ty<I>,
    subst: &Substitution<I>,
)
where I: Interner,
Expand description

Generates the “fully visible” program clauses for an applicative type with the name type_name. For example, given a struct definition:

struct Foo<T: Eq> { }

we would generate the clause:

forall<T> {
    IsFullyVisible(Foo<T>) :- IsFullyVisible(T).
}

§Parameters

  • builder – the clause builder. We assume all the generic types from Foo are in scope
  • type_name – in our example above, the name Foo