New candidate JEP: 492: Flexible Constructor Bodies (Third Preview)

Gavin Bierman gavin.bierman at oracle.com
Mon Nov 4 12:23:39 UTC 2024


Thanks Maurizio.

On 4 Nov 2024, at 11:29, Maurizio Cimadamore <maurizio.cimadamore at oracle.com> wrote:


Hi Gavin,
the changes look good, thanks! Some minor comments below:

* "If a constructor body does not begin with contain an explicit constructor invocation and the constructor being declared is not part of the primordial class Object, then the constructor body implicitly begins with a superclass constructor invocation "super();", an invocation of the constructor of its the direct superclass that takes no arguments."

Should we use the newly introduced terminology here (to make things extra clear)? E.g. say that if the constructor does not contain an explicit constructor invocation, then all statements are implicitly treated as epilogue, there's no prologue, and the explicit constructor is "super()".

Thanks! Yes we should do this. I have updated the spec.


* "It is a compile-time error for a constructor to directly or indirectly invoke itself through a series of one or more alternate constructor invocations."

I found this confusing -- after all constructor of A can do "new B()" which can then do "new A()". Does the constructor invoke itself? I think you mean "invoke itself _on the same receiver object_" ?

This is actually text that got moved from 8.8.7.1; so dates from prehistory :-) I think it is okay. It means that you can’t do a this( …) [that’s invoking a constructor] that is actually calling yourself; or if you call another constructor, then you can’t have a chain of this invocations that end up calling you. A new expression isn’t considered an invocation.


* The fixes to 8.8.7.1 and 15.9.2 look good! (the PR for them is in [1])

Yay.

Thanks,
Gavin


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20241104/2214c182/attachment.htm>


More information about the amber-dev mailing list