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