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