On Tue, 18 Apr 2023 20:24:33 GMT, Vicente Romero <vrom...@openjdk.org> wrote:
>> Jan Lahoda has updated the pull request incrementally with six additional >> commits since the last revision: >> >> - Fixing infinite loop where a binding pattern is replaced with a binding >> pattern for the same type. >> - Reflecting review comments. >> - Fixing exhaustiveness for unsealed supertype pattern. >> - No need to enable features after error reported. >> - SwitchBootstraps.typeSwitch should not initialize enum classes. >> - A prototype of avoiding enum initialization. > > src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 94: > >> 92: * <li>the element is of type {@code String} or {@code Integer} and >> 93: * equals to the target.</li> >> 94: * <li>the element is of type {@code EnumDesc}, that describes a >> constant that is > > I think that at ~line 76, up in this same javadoc you need to add a reference > to EnumDesc in the general description. Where it says: > > > The static arguments are an array of case labels which must be non-null and > of type > {@code String} or {@code Integer} or {@code Class}. > > also around line 107, where it says: > > @param labels case labels - {@code String} and {@code Integer} constants > and {@code Class} instances, in any combination Should be resolved by: https://github.com/openjdk/jdk/pull/13074/commits/bb59254e409821c9b14287c73a35ebe2dd2cbda9 Thanks for the comment! > src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 263: > >> 261: private static <E extends Enum<E>> void validateEnumLabel(Class<?> >> enumClassTemplate, Object label) { >> 262: if (label == null) { >> 263: throw new IllegalArgumentException("null label found"); > > I think that this one is not hit by any test Should be resolved by: https://github.com/openjdk/jdk/pull/13074/commits/bb59254e409821c9b14287c73a35ebe2dd2cbda9 Thanks for the comment! > src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 271: > >> 269: ", expected the >> provided enum class: " + enumClassTemplate); >> 270: } >> 271: } else if (labelClass == String.class) { > > I think that if the condition is changed to `labelClass != String.class` then > `throw` we can drop an `else` branch Should be resolved by: https://github.com/openjdk/jdk/pull/13074/commits/bb59254e409821c9b14287c73a35ebe2dd2cbda9 Thanks for the comment! > src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 274: > >> 272: //OK >> 273: } else { >> 274: throw new IllegalArgumentException("label with illegal type >> found: " + labelClass + > > I think that this code is not being tested by any test Should be resolved by: https://github.com/openjdk/jdk/pull/13074/commits/bb59254e409821c9b14287c73a35ebe2dd2cbda9 Thanks for the comment! > src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java line 201: > >> 199: /** Are unconditional patterns in instanceof allowed >> 200: */ >> 201: private boolean allowUnconditionalPatternsInstanceOf; > > so I guess this field can be made final now Should be resolved by: https://github.com/openjdk/jdk/pull/13074/commits/bb59254e409821c9b14287c73a35ebe2dd2cbda9 Thanks for the comment! > src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java line 909: > >> 907: >> 908: Set<Symbol> permitted = >> allPermittedSubTypes(clazz, csym -> { >> 909: Type instantiated = >> infer.instantiatePatternType(selectorType, csym); > > for some cases, when there are no type parameters, this invocation is a > no-op, do we really need inference at this point? Should be resolved by: https://github.com/openjdk/jdk/pull/13074/commits/bb59254e409821c9b14287c73a35ebe2dd2cbda9 Thanks for the comment! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1172877205 PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1172877482 PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1172877294 PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1172877401 PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1172878133 PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1172878329