Talking it through with Dan, I think the best thing for the JLS is to avoid 
issues of `this` etc and simply state:

        It is a compile-time error to assign to the instance fields of the 
record class in the body of the compact constructor.

Thoughts?
Gavin


> On 27 Apr 2020, at 23:54, Remi Forax <fo...@univ-mlv.fr> wrote:
> 
> 
> 
> ----- Mail original -----
>> De: "Brian Goetz" <brian.go...@oracle.com>
>> À: "daniel smith" <daniel.sm...@oracle.com>, "John Rose" 
>> <john.r.r...@oracle.com>
>> Cc: "amber-spec-experts" <amber-spec-experts@openjdk.java.net>
>> Envoyé: Mardi 28 Avril 2020 00:37:05
>> Objet: Re: Possible records tweak
> 
>>>> So maybe `super` is DA but `this` is DU, just like in the code
>>>> before the super-constructor call.  (I’m abusing the terms DA/DU
>>>> like Brian is, and you call out, but they are close to correct.)
>>> I think this means I can't call inherited method 'getParentWidget()' or some
>>> static utility 'computeWidgetOfParent(this)' method (e.g.,
>>> 'identityHashCode(this)'). I *can* call 'super.getParentWidget()'.
>> 
>> Except records only inherit from Record, which has no non-inherited
>> instance methods.
> 
> super.wait(), etc should work
> 
> Rémi
> 

Reply via email to