In the JDK 7 compiler implementation, we have that inference variables are represented by a special class named UndetVar. Those types are used in subtyping/type-equality/type-containment check, and those routine actively append constraints to the inference variables. The bad news is that in some places we go even further, and we check well-formedness w.r.t. bounds in the middle of a subtyping check. This makes it very difficult to isolate the inference/bound checking logic, so that it is harder to maintain update.
|