Generation of synthesized parameters
Peter Jensen
peter.jensen at oracle.com
Tue Jan 29 14:06:32 PST 2013
On 01/29/13 12:14, Joe Darcy wrote:
> Hello,
>
> On 1/29/2013 11:40 AM, Eric McCorkle wrote:
>> In order to facilitate writing tests for the MethodParameters feature,
>> I'd like to get a complete list of all the cases when javac can generate
>> synthesized parameters.
>>
>> Here is a list I've put together from email discussions and comments
>> in JBS:
>>
>> 1) outer "this" parameters
>
> Arguably, some outer this parameters would be *synthesized* with
> others would be *synthetic*.
>
> Inner classes that are also member classes, (see diagram in "Nested,
> Inner, Member, and Top-Level Classes,"
> https://blogs.oracle.com/darcy/entry/nested_inner_member_and_top), are
> potentially callable from outside of the enclosing class and are
> required to have an outer this parameter as the first parameter so
> that code from different compilers can call each other. The other
> this parameter in this case is *synthesized* as it is mandated or
> implied by the JLS.
>
> On the other hand, named inner classes defined inside a method or
> constructor as well as anonymous classes only need to obey a
> compiler-internal contract and any extra parameters in this case are
> *synthetic*. (Not all anonymous classes have an outer; an anonymous
> class created inside a static initializer block does not.)
>
>
>> 2) extra values passed to constructor for enum values
>
> Such parameters are *synthetic*, they are a javac implementation
> artifact not mandated or implied by the JLS.
>
>> 3) hidden values passed to constructors of inner classes for final
>> variables
>
> You'll can check the JLS regarding whether these are synthesized or
> synthetic, but I would assume they are synthetic.
>
>> 4) JLS mandated public no-arg constructors added by the compiler to
>> classes with no declared constructor: synthesized
>
> This is not a parameter, but another language structure.
>
> HTH,
>
> -Joe
>
>> 5) The two parameters pre-ended to enum constructors by javac
>>
>>
>> Does this capture everything, or does it miss something?
>>
>> Ideally, I would like to put together a complete list of all cases that
>> should generate synthesized parameters. (If one already exists, then
>> that's great).
>>
>> Thanks,
>> Eric
>
Argument pf synthetic enum valueOf() method. Synthetic or synthesized ?
More information about the compiler-dev
mailing list