On Tue, 12 Apr 2022 13:18:14 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> This is a (preliminary) patch for javac implementation for the third preview 
>> of pattern matching for switch (type patterns in switches).
>> 
>> Draft JLS:
>> http://cr.openjdk.java.net/~gbierman/PatternSwitchPlusRecordPatterns/PatternSwitchPlusRecordPatterns-20220407/specs/patterns-switch-jls.html
>> 
>> The changes are:
>> -there are no guarded patterns anymore, guards are not bound to the 
>> CaseElement (JLS 15.28)
>> -a new contextual keyword `when` is used to add a guard, instead of `&&`
>> -`null` selector value is handled on switch level (if a switch has `case 
>> null`, it is used, otherwise a NPE is thrown), rather than on pattern 
>> matching level.
>> -total patterns are allowed in `instanceof`
>> -`java.lang.MatchException` is added for the case where a switch is 
>> exhaustive (due to sealed types) at compile-time, but not at runtime.
>> 
>> Feedback is welcome!
>> 
>> Thanks!
>
> Jan Lahoda has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Cleanup.

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

> 1777:                         //binding pattern
> 1778:                         attribExpr(pat, switchEnv);
> 1779:                         var primary = TreeInfo.primaryPatternType(pat);

general comment: the handleSwitch method is getting more and more complex, 
please consider refactoring it, probably splitting it, for example different 
subrutines handling different case kinds. Of course this probably should be 
done as a separate effort.

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

PR: https://git.openjdk.java.net/jdk/pull/8182

Reply via email to