Javac not trying to recover unresolved parameterized types

Vicente Romero vicente.romero at oracle.com
Tue Aug 20 14:03:51 UTC 2024


Hi,

I think this is probably more a feature request than a bug but in any 
case please file an issue and assign it to myself,

Thanks,
Vicente

On 8/19/24 12:02, Mickael Istria wrote:
> Hi all,
>
> As part of our work to allow Eclipse JDT to use Javac as backend, we 
> noticed that in case of unresolved parameterized types, the compiler 
> doesn't generate a nice recovered TypeSymbol with interesting data 
> (such as the name) that can be used later.
> For example, my latest issue is that code like
> ```
> class K {
>   Regular reg;
>   Parameterized<Object> par;
> }
> ```
> where neither Regular nor Parameterized exist, make Javac produce a 
> "recovered" symbol for `Regular` (at least the ErrorTypr stores the 
> "Regular" name) when asking for the tsym of `reg` VarSymbol, while it 
> doesn't produce anything useful for `Parameterized` when asking for 
> the tsym of `par` VarSymbol. In this later case, the symbol points to 
> `noType` which isn't usable by the IDE to generate a minimal DOM object.
>
> In comparison, ECJ generates a recovered type binding for 
> `Parameterized`, which can be later used by some refactorings as if 
> the type were existing. Such refactorings that work with ECJ backend 
> cannot work with the Javac backend because of the symbol being unusable.
>
> We're currently adding a bunch of workarounds in many places to handle 
> this case, but we'd obviously rather prefer if Javac can come with 
> such smartness out of the box.
>
> So this behavior in Javac seems to me like a small issue or limitation 
> in Javac. What do you think? Is this "problem" already known? Should 
> this be reported as a bug? Does it make sense to expect Javac to 
> provide such recovery for parameterized types to? Should we try to fix 
> it?...
>
> Thanks in advance for you guidance
> -- 
> Mickael Istria
> Eclipse IDE <https://www.eclipse.org/eclipseide> developer, for Red 
> Hat <https://developers.redhat.com/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/compiler-dev/attachments/20240820/caa67a8c/attachment-0001.htm>


More information about the compiler-dev mailing list