RFR: JDK14-8236005: local records shouldn't capture any non-static state from any enclosing type
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Fri Jan 10 19:06:30 UTC 2020
Not 100% sure - shouldn't the "staticOnly" variable be set to true when
we are inside a local record, so that the existing check will issue an
error?
I see that "staticOnly" is set in this routine:
/** An environment is "static" if its static level is greater than
* the one of its outer environment
*/
protected static boolean isStatic(Env<AttrContext> env) {
return env.outer != null && env.info.staticLevel >
env.outer.info.staticLevel;
}
Which makes me think that, maybe the staticLevel of the local record has
not increased its value as expected?
Maurizio
On 10/01/2020 03:54, Vicente Romero wrote:
> Hi,
>
> Please review the fix for [1] at [2]. This fix is for the compiler to
> emit an error if a local record accesses non-static state from the
> enclosing environment
>
> Thanks,
> Vicente
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8236005
> [2] http://cr.openjdk.java.net/~vromero/8236005/webrev.00/
>
More information about the compiler-dev
mailing list