[Just circling back to this, as I added a note about the grammar to the JEP 
page…]

> On 6 Feb 2020, at 20:38, Remi Forax <fo...@univ-mlv.fr> wrote:
> 
> [moved to amber-spec]
> 
> ----- Mail original -----
>> De: "jan lahoda" <jan.lah...@oracle.com>
>> À: "amber-dev" <amber-...@openjdk.java.net>
>> Envoyé: Jeudi 6 Février 2020 21:18:52
>> Objet: Pattern Matching for instanceof (Preview 2)
> 
>> Hi,
>> 
>> Thanks to Gavin, Brian and Alex, there is a new draft JEP for Pattern
>> Matching for instanceof (Preview 2):
>> https://bugs.openjdk.java.net/browse/JDK-8235186
>> 
>> Any feedback on the JEP is more than welcome!
>> 
>> Thanks,
>>     Jan
> 
> so the difference with the previous preview is that deconstruction is added.

That is correct.

> 
> I see two questions:
> - the grammar allows to mix var and non-var for a given reference type, i 
> think that should only permitted if the non var is a deconstruction itself ?

I don’t know what you mean here. There are two patterns, a type test pattern 
and a deconstruction pattern. In v2 we propose to support deconstruction 
patterns over record types *only*. A deconstruction pattern looks like this: 
Point(var a, var b), i.e. all the components are either (recursively) 
deconstruction patterns, or `var` <identifier>, i.e. with no type needed. I 
added a note to the JEP page pointing out that this is a starting point, and 
eventually we will support other patterns in the argument position, 
specifically <type> <identifier>; hopefully in this release.


> - must the identifier of a pattern argument be the same name as the 
> corresponding record component ?
>  To be coherent with the fact that constructors requires the same names.

Absolutely not! Note this does mean that you can write confusing code:

record Point(int x, int y) { }

if (o instanceof Point(var y, var x)) { 
… // y refers to x component, y refers to x component
}

(I’ll get my coat…)

Thanks,
Gavin

Reply via email to