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