Function chalk_solve::clauses::match_ty

source ·
fn match_ty<I: Interner>(
    builder: &mut ClauseBuilder<'_, I>,
    environment: &Environment<I>,
    ty: &Ty<I>,
) -> Result<(), Floundered>
Expand description

Examine T and push clauses that may be relevant to proving the following sorts of goals (and maybe others):

  • DomainGoal::WellFormed(T)
  • DomainGoal::IsUpstream(T)
  • DomainGoal::DownstreamType(T)
  • DomainGoal::IsFullyVisible(T)
  • DomainGoal::IsLocal(T)

Note that the type T must not be an unbound inference variable; earlier parts of the logic should “flounder” in that case.