RFR: 8325859: Potential information loss during type inference [v8]

Maurizio Cimadamore mcimadamore at openjdk.org
Tue May 20 14:12:05 UTC 2025


On Tue, 20 May 2025 14:06:12 GMT, Vicente Romero <vromero at openjdk.org> wrote:

>> 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 incrementally with one additional commit since the last revision:
> 
>   addressing review comments

The new simpler patch looks great! Thanks for persevering!!!

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/InferenceContext.java line 573:

> 571:     public String toString() {
> 572:         return "Inference vars: " + inferencevars + '\n' +
> 573:                "Undet vars: " + undetvars + '\n';

Optional: should this also print the parent?

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

Marked as reviewed by mcimadamore (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/25011#pullrequestreview-2854369139
PR Review Comment: https://git.openjdk.org/jdk/pull/25011#discussion_r2098081186


More information about the compiler-dev mailing list