RFR: 8325859: potential information loss during type inference [v4]

Vicente Romero vromero at openjdk.org
Mon May 19 21:19:36 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

Vicente Romero has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:

 - Merge branch 'master' into JDK-8325859
 - experiments, addressing review comments
 - Merge branch 'master' into JDK-8325859
 - make visitor static
 - updating doc
 - 8325859: potential information loss during type inference

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/25011/files
  - new: https://git.openjdk.org/jdk/pull/25011/files/66e457fe..1629c25e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25011&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25011&range=02-03

  Stats: 53260 lines in 1607 files changed: 25910 ins; 19033 del; 8317 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