Flag missing with "requires java.base"?

Paul Benedict pbenedict at apache.org
Thu Jul 28 18:57:51 UTC 2016


Alex, I thank you for repeating the explanation again, but I find your
definition hard to accept. To me, something that's synthetic is
manufactured. If the compiler automatically shims my class file with an
export to "java.base", that sounds pretty synthetic/manufactured to me. I
view that as a separate and unrelated issue to what's mandated. Why do you
believe you must bring in the knowledge of implicitness/explicitness into
your synthetic definition?

I thought you wanted to retain the difference between what a user specified
and what something else specified? The something else here would be the JLS
or compiler.

Cheers,
Paul

On Thu, Jul 28, 2016 at 1:17 PM, Alex Buckley <alex.buckley at oracle.com>
wrote:

> I already explained that ACC_SYNTHETIC and ACC_MANDATED mean different
> things. A dependence on java.base is never ACC_SYNTHETIC because it is
> either explicitly declared (no ACC_SYNTHETIC, no ACC_MANDATED) or
> implicitly declared (no ACC_SYNTHETIC, yes ACC_MANDATED) -- there are no
> other possibilities.
>
> Alex
>
>
> On 7/28/2016 9:11 AM, Paul Benedict wrote:
>
>> Although "java.base" is mandated to be included, it is also inserted
>> automatically by the compiler. Isn't anything automatically inserted by
>> the
>> compiler considered synthetic? When I examine the class file, I get
>> ACC_MANDATED but not ACC_SYNTHETIC for this export. I believe both should
>> be there.
>>
>> Furthermore, the user is allowed to explicitly ask for "java.base" to be a
>> requirement. When this happens, I think ACC_SYNTHETIC should not be
>> included.
>>
>> Cheers,
>> Paul
>>
>>


More information about the jigsaw-dev mailing list