Compute realizability status
A set of all fields that have already been checked. Used to avoid infinite recursions when analyzing recursive types.
tp has good bounds, a
pointing to a bad bounds member otherwise. "Has good bounds" means:
- all type members have good bounds (except for opaque helpers)
- all refinements of the underlying type have good bounds (except for opaque companions)
- all base types are class types, and if their arguments are wildcards they have good bounds.
- base types do not appear in multiple instances with different arguments. (depending on the simplification scheme for AndTypes employed, this could also lead to base types with bad bounds).
Is symbol's definitition a lazy or erased val? (note we exclude modules here, because their realizability is ensured separately)
Realizable if all of
tp's non-strict fields have realizable types,
HasProblemField instance pointing to a bad field otherwise.