Thanks Maurizio.

On 4 Nov 2024, at 11:29, Maurizio Cimadamore <[email protected]> 
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


Reply via email to