Record pattern and enhanced for

forax at univ-mlv.fr forax at univ-mlv.fr
Wed Oct 26 09:42:00 UTC 2022


----- Original Message -----
> From: "Brian Goetz" <brian.goetz at oracle.com>
> To: "Remi Forax" <forax at univ-mlv.fr>, "amber-spec-experts" <amber-spec-experts at openjdk.java.net>
> Sent: Monday, October 24, 2022 7:06:15 PM
> Subject: Re: Record pattern and enhanced for

>> Hi do not think we have yet discussed about using the record pattern in an
>> enhanced for
>>    https://cr.openjdk.java.net/~gbierman/jep432%2b433/jep432+433-20221018/specs/patterns-switch-record-patterns-jls.html#jls-14.14.2
>>
>> My first reaction when reading that part of the spec was, ok, cool, a bit weird
>> to not piggyback it on pattern assignment but on the switch instead.
> 
> It's not piggybacked on either.  It's part of the Record Patterns JEP,
> which lets you put record patterns in instanceof, switch, and foreach
> contexts.  (The semantics are indeed similar to pattern assignment, so
> when that comes along, nothing new to learn.)

The thing is that there are two ways to implement assignment + pattern, one is to consider that the pattern should be total on the type of the expression, the other is that it should be equivalent to a switch. The later does not work well because of the remainders (null + new subtypes due to separate compilation).

I believe we have made the right call for switch to not force users to explicitly write the handling of the remainders but we can use a more strict approach for the assignment / inside an enhanced for.

Rémi


More information about the amber-spec-observers mailing list