hg: valhalla/valhalla: [lworld] Where statically discernible, javac should reject null assignments to, null casts to and null comparisons with value instances. (original) (raw)
Srikanth srikanth.adayapalam at oracle.com
Tue Feb 27 08:25:00 UTC 2018
- Previous message (by thread): hg: valhalla/valhalla: [lworld] Where statically discernible, javac should reject null assignments to, null casts to and null comparisons with value instances.
- Next message (by thread): Banning constructors in value classes (JDK-8198749)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tuesday 27 February 2018 01:38 PM, srikanth.adayapalam at oracle.com wrote:
Changeset: 605a5a1da9fe Author: sadayapalam Date: 2018-02-27 13:34 +0530 URL: http://hg.openjdk.java.net/valhalla/valhalla/rev/605a5a1da9fe
[lworld] Where statically discernible, javac should reject null assignments to, null casts to and null comparisons with value instances.
This change set aligns javac's behavior with what is outlined in http://mail.openjdk.java.net/pipermail/valhalla-dev/2018-February/003870.html
In particular,
ValueType v = null; // error: ValueType is not nullable v = (ValueType) null; // (ditto) if (v != null) {} // (ditto)
Assignment of, casting of or comparison of nulls with/to value instances would be rejected by javac where it can be statically determined to be the case.
I have raised a follow up ticket: https://bugs.openjdk.java.net/browse/JDK-8198748 for injection of null checks at casts (and other contexts?). This I will take up after fully understanding the issue.
Thanks! Srikanth
! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/langtools/tools/javac/diags/examples/IllegalNullAssignmentToFlattenableValue.java ! test/langtools/tools/javac/valhalla/lworld-values/CheckFlattenableFlagFromClass.out ! test/langtools/tools/javac/valhalla/lworld-values/CheckMultiDimensionalArrayStore.out ! test/langtools/tools/javac/valhalla/lworld-values/CheckNullAssign.java ! test/langtools/tools/javac/valhalla/lworld-values/CheckNullCastable.java ! test/langtools/tools/javac/valhalla/lworld-values/CheckNullCastable.out ! test/langtools/tools/javac/valhalla/lworld-values/FlattenableNegativeTest.out
- Previous message (by thread): hg: valhalla/valhalla: [lworld] Where statically discernible, javac should reject null assignments to, null casts to and null comparisons with value instances.
- Next message (by thread): Banning constructors in value classes (JDK-8198749)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]