Review request for JDK-8020745: Suspicious MethodParameters attribute generated for local classes capturing local variables

Alex Buckley alex.buckley at
Tue Aug 20 18:17:38 PDT 2013

- Method makeAnonExtendsInner does not return an instance of an 
anonymous class whose superclass is inner. InnerList is a local class, 
and its superclass ArrayList is top level. Also, you should document the 
kinds of classes for which you're exercising parameter generation.

- Encapsulate! The "expected" variables like Inner_names should be 
closer to the classes declaring the "actual" variables (i.e. constructor 
parameters) of interest. checkConstructor should merely have to ask that 
class to check itself.


On 8/20/2013 3:36 PM, Eric McCorkle wrote:
> A new webrev has been uploaded which addresses these issues.
> On 08/19/13 20:28, Alex Buckley wrote:
>> The test is very confusing. Two classes with
>> main methods in the same compilation unit?!
>> Bug 8020745 indicates a mismatch between parameter names and types, but
>> this test only checks names. Rather than relying on the order of names
>> from the JVM to match the 'names' array, you should match up names and
>> types explicitly.
>> List is a bad name for a helper class, and the @summary is not very
>> helpful.
>> Most importantly, there are no anonymous classes here - List is a local
>> class. The test should have an anonymous class too - in fact, an
>> anonymous class whose superclass is not inner and an anonymous class
>> whose superclass is inner. (See the notes in 8misc.pdf 2.2 8.8.9 for why
>> that matters.)
>> Alex
>> On 8/19/2013 4:31 PM, Eric McCorkle wrote:
>>> Hello,
>>> Please review this patch, which causes captured locals to be added to
>>> the end of a MethodParameters attribute, like they should.
>>> The webrev is here:
>>> The bug report is here:
>>> This review is also on the new Crucible system.
>>> Thanks,
>>> Eric

More information about the compiler-dev mailing list