RFR: 8325859: potential information loss during type inference

Vicente Romero vromero at openjdk.org
Fri May 2 17:24:42 UTC 2025


When an inference context (`IC`) is minimized, the minimized inference context (`MIC`) contains a proper subset of `IC's` inference vars (`IC_IV`). In other words there will be at least one inference variable `T` that belongs to `IC_IV` which doesn't belong to the minimized context inference variable's set (`MIC_IV`). MIC can be propagated to another inference context (AIC) as part of the type inference algo. If at any moment a type containing `T` needs, for example, to be instantiated `AIC` won't be able to perform that operation as it lacks the information to realize that `T` is a free variable it was supposed to know about hadn't a minimization step been performed. This PR is proposing to fix this issue without reducing the universe of inference contexts we apply the minimization algo to.

We are basically proposing to add a field to class InferenceContext which will be supplementary inference context that can be used to look for additional information if necessary. Also when registering a free type listener to an inference context, it could be that it won't be registered in the inference context the client could expect but in a supplementary inference context if it is found out that it contains and instantiation to all the free variables related to the listener. See also some comments inlined in the code,

TIA

-------------

Commit messages:
 - updating doc
 - 8325859: potential information loss during type inference

Changes: https://git.openjdk.org/jdk/pull/25011/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25011&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8325859
  Stats: 166 lines in 3 files changed: 161 ins; 0 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/25011.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25011/head:pull/25011

PR: https://git.openjdk.org/jdk/pull/25011


More information about the compiler-dev mailing list