[lworld] RFR: 8280382: [lworld] JCWithField AST node support should evolve to work with value classes
Srikanth Adayapalam
sadayapalam at openjdk.java.net
Fri Jan 28 05:24:24 UTC 2022
On Thu, 27 Jan 2022 19:24:47 GMT, Aggelos Biboudis <duke at openjdk.java.net> wrote:
> This PR ports basic `withField` tests from lworld-values to value-objects and extending some areas of code to support `withField` within value classes.
>
> Nitpicking and a note: one of the error messages is now `compiler.err.primitive.or.value.class.instance.field.expected.here`. Would you propose to disambiguate further depending whether we are inside a `primitive` or a `value` class?
src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java line 615:
> 613: !t.hasTag(BOT) && isSubtype(t, s.referenceProjectionOrSelf());
> 614: }
> 615:
These changes are not necessary and in fact are incorrect. See that with this change, the following code does not compile anymore which it should.
public value class X {
public static void main(String[] args) {
X x = null;
}
}
This triggers an error:
X.java:3: error: incompatible types: <null> cannot be converted to X
X x = null;
^
X being a B2 value class its instances are very much nullable.
-------------
PR: https://git.openjdk.java.net/valhalla/pull/621
More information about the valhalla-dev
mailing list