RFR: 8303374: Implement JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview) [v55]

Jan Lahoda jlahoda at openjdk.org
Mon Jan 29 16:18:53 UTC 2024


On Fri, 26 Jan 2024 18:02:58 GMT, Aggelos Biboudis <abimpoudis at openjdk.org> wrote:

>> This is the proposed patch for Primitive types in patterns, instanceof, and switch (Preview).
>> 
>> Draft spec here: https://cr.openjdk.org/~abimpoudis/instanceof/latest/
>
> Aggelos Biboudis has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove redundant null check  and introduce a const boolean for unconditionally exact pairs

javac changes look sensible to me - some minor comments inline.

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java line 5040:

> 5038:      *  @param target     Target primitive or reference type
> 5039:      */
> 5040:     public boolean checkUnconditionallyExact(Type source, Type target) {

Maybe something like `isUnconditionallyExact`?

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java line 5060:

> 5058:      *  @param targetType       Target type
> 5059:      */
> 5060:     public boolean checkUnconditionallyExactPrimitives(Type selectorType, Type targetType) {

Maybe something like `isUnconditionallyExactPrimitives`?

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java line 1799:

> 1797:                             log.error(label.pos(), Errors.UnconditionalPatternAndDefault);
> 1798:                         }  else if (booleanSwitch && constants.containsAll(Set.of(0, 1))) {
> 1799:                             log.error(label.pos(), Errors.UnconditionalPatternAndDefault); // TODO improve error

Maybe file a follow-up to improve the error?

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java line 3079:

> 3077: 
> 3078:         // Resolve the exactness method
> 3079:         Symbol ecsym = rs.resolveQualifiedMethod(null,

Minor: better use `rs.resolveInternalMethod` or `this.lookupMethod`, so that the compilation fails more obviously if the method cannot be found.

test/langtools/tools/javac/diags/examples/NotApplicableTypes.java line 21:

> 19:  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
> 20:  * or visit www.oracle.com if you need additional information or have any
> 21:  * questions.

The key does not exist any, per my understanding. I would suggest to simply delete the file.

test/langtools/tools/javac/diags/examples/SelectorTypeNotAllowed.java line 24:

> 22:  */
> 23: 
> 24: // key: compiler.err.preview.feature.disabled.plural

The key does not exist any, per my understanding. I would suggest to simply delete the file.

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

Marked as reviewed by jlahoda (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/15638#pullrequestreview-1848712425
PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1469805646
PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1469806136
PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1469614384
PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1469811642
PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1469838360
PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1469838529


More information about the compiler-dev mailing list