On Fri, 21 Apr 2023 10:56:55 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> This is the first draft of a patch for JEP 440 and JEP 441. Changes included:
>> 
>>  - the pattern matching for switch and record patterns features are made 
>> final, together with updates to tests.
>>  - parenthesized patterns are removed.
>>  - qualified enum constants are supported for case labels.
>> 
>> This change herein also includes removal record patterns in for each loop, 
>> which may be split into a separate PR in the future.
>
> Jan Lahoda has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Replacing use of mutable callsite with a mutable state.

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java line 915:

> 913:          */
> 914:         private List<PatternDescription> reduceBindingPatterns(Type 
> selectorType, List<PatternDescription> patterns) {
> 915:             Set<Symbol> existingBindings = patterns.stream()

Playing some more - I found this example:


class Test {
    sealed interface I permits C, D { }
    non-sealed interface C extends I { }
    non-sealed interface D extends I { }

    interface F { }

    <Z extends I & F> int test(Z o) {
        return switch (o) {
            case C c -> 1;
            case D d -> 2;
        };
    }
}


Which compiles correctly, but it doesn't look exhaustive to me (because of F) ?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13074#discussion_r1173896399

Reply via email to