Ping to Brian...

Any thoughts or comments on the proposed description below for
"pre-initialization context"?

I went ahead and added it into the JEP draft but am happy to adjust as
needed.

Thanks,
-Archie

On Thu, Feb 2, 2023 at 3:49 PM Archie Cobbs <[email protected]> wrote:

> On Thu, Feb 2, 2023 at 2:16 PM Brian Goetz <[email protected]> wrote:
>
>> This can be amended to:
>>
>> An explicit constructor invocation statement introduces an
>> _pre-initialization context_, which limits the use of constructs that refer
>> to the current object.  Notably, the keywords `this` and `super` are
>> prohibited in a pre-initialization context, as are unqualified references
>> to instance variables and instance methods of lexically enclosing
>> declarations.
>>
>
> That might not work. For example, this source is legal (as it should be)
> and yet the 'this' keyword appears within the super() call:
>
> $ cat Outer.java
> public class Outer {
>
>     public int x;
>
>     public Outer(int x) {
>         this.x = x;
>     }
>
>     public class Inner extends Outer {
>         public Inner() {
>             super(Outer.this.x + 10);
>         }
>     }
>
>     public static void main(String[] args) {
>         System.out.println(new Outer(10).new Inner().x);
>     }
> }
> $ java -cp classes Outer
> 20
>
> What about something like this?
>
> An explicit constructor invocation statement introduces a *pre-initialization
>> context*, which includes the prologue of the constructor and the
>> explicit constructor invocation statement, and which prohibits the use of
>> constructs that refer explicitly or implicitly to the current object. These
>> include this or super referring to the current object, unqualified
>> references to instance variables or instance methods of the current object,
>> method references referring to instance methods of the current object, and
>> instantiations of inner classes of the current object's class for which the
>> current object is the enclosing instance (ยง8.1.3).
>>
>
-- 
Archie L. Cobbs

Reply via email to