Review request: update javac to properly output mandated parameters in MethodParameters attributes (original) (raw)

Alex Buckley alex.buckley at oracle.com
Thu Feb 7 11:32:15 PST 2013


In http://cr.openjdk.java.net/~abuckley/8misc.pdf, see JLS 13.1 for new information about explicitly and implicitly declared constructs. Also, see JVMS 4.7.22 for how a compiler emitting class files can mark formal parameters as required by JLS 13.1.

On 2/7/2013 10:45 AM, Maurizio Cimadamore wrote:

Uhm - the definition of ACCMANADATE seems to imply that there's a spec demanding a given extra parameter. But that's not the case for, i.e. extra constructor arguments generated in this case:

class Foo { void m() { final Object o = null; new Object() { }; } } the constructor of the anonymous inner class will accept and extra Object argument. Is that mandated by the spec?

No. I don't know why the anonymous class's ctor would need a parameter for this code.

class Outer { class Inner { } void m(Outer outer) { outer.new Inner() { }; } }

Extra argument here (enclosing this).

Yes, the argument is implicitly declared in JLS 8.8.9.

Alex



More information about the compiler-dev mailing list