Thanks Remi. Yes, this text could be better (interestingly, it is unchanged 
from nearly a year ago!). I think you’d agree that *pattern matching* with 
nested patterns provides a null-safe approach to data access, right? That’s 
really what I am getting at. In that sense, record patterns are a key, because 
they support nesting of patterns. You are correct that the construct within 
which we surface pattern matching can have a say in the top-level treatment of 
null. Indeed, one of the things we are discussing at the moment is exactly 
whether switch should have a stronger opinion about top-level null! 

Let me see if I can work on the text some more. 

Thanks for the feedback,
Gavin

> On 9 Feb 2022, at 16:40, Remi Forax <fo...@univ-mlv.fr> wrote:
> 
> Hi Gavin,
> I don't buy the argument that record patterns promote a null-safe style of 
> programming as this is stated several times in the JEP.
> 
> The ""null-safety"" (notice the air quotes) mostly comes from the instanceof 
> or the switch (which semantics is equivalent of a cascade of if instanceof), 
> not from the record pattern by itself.
> 
> You can argue that when a record pattern is nested a nullcheck appears, but 
> it's more than the underlying semantics is a degenerated instanceof when the 
> declared type and the instanceof type are the same.
> 
> The record pattern is about destructuring after the instanceof/nullcheck has 
> been done, so i find that argument counter productive because it does not 
> help to understand the semantics.
> 
> Also, we have talked several times to introduce the record pattern when doing 
> an assignment
>  Point point = ...
>  Point(int x, int y) = point;
>  // can use x and y here !
> 
> This will throw a NPE if point is null, similarly to an unboxing operation.
> 
> The null-safety is not attached to the record pattern per se but by the 
> container that use it (instanceof, case of a switch, enclosing pattern).
> 
> regards,
> Rémi
> 
> ----- Original Message -----
>> From: "Gavin Bierman" <gavin.bier...@oracle.com>
>> To: "amber-spec-experts" <amber-spec-experts@openjdk.java.net>
>> Sent: Wednesday, February 9, 2022 12:59:02 PM
>> Subject: JEP 405 update
> 
>> Dear experts,
>> 
>> Just to let you know that I have updated JEP 405:
>> 
>> https://openjdk.java.net/jeps/405
>> 
>> You will see that we have removed the array patterns from this JEP (and it 
>> has
>> been retitled accordingly). We're still committed to supporting a direct 
>> pattern
>> form for arrays, but given our tight schedule and a number of queries about 
>> the
>> exact syntactic form for array patterns, we think we'll be better off 
>> decoupling
>> them from JEP 405, and releasing them in a future patterns JEP.
>> 
>> Comments welcomed!
>> Gavin

Reply via email to