Review request: update javac to properly output mandated parameters in MethodParameters attributes

maurizio cimadamore maurizio.cimadamore at oracle.com
Thu Feb 7 12:36:49 PST 2013


On 07-Feb-13 8:32 PM, Alex Buckley wrote:
> On 2/7/2013 12:08 PM, maurizio cimadamore wrote:
>> On 07-Feb-13 7:32 PM, Alex Buckley wrote:
>>> No. I don't know why the anonymous class's ctor would need a parameter
>>> for this code.
>> Ok - so this is a case where Eirc's implementation would mark the extra
>> parameter added by javac as MANDATED - which I think it's not right, no?
>
> I checked what javac does for:
>
> class Foo {
>     void m() {
>         final Object o = null;
>         new Object() { };
>     }
> }
>
> javac generates Foo$1 for the anonymous class, with a ctor that has a 
> single Foo parameter (not Object) representing the immediately 
> enclosing instance.
My bad
add an usage of 'o' inside the anonymous inner - the logic is lazy and 
nothing will be generated if not used.

Maurizio
>
> For reasons explained in JLS 8.8.9, that single parameter is _not_ 
> implicitly declared by the language. Since it's not explicitly 
> declared either, it should be marked ACC_SYNTHETIC in the class file.
>
> Alex




More information about the compiler-dev mailing list