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