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 >