Flag missing with "requires java.base"?
Paul Benedict
pbenedict at apache.org
Thu Jul 28 18:59:53 UTC 2016
Error to correct: I meant a "requires" not an "export". Thank you.
Cheers,
Paul
On Thu, Jul 28, 2016 at 1:57 PM, Paul Benedict <pbenedict at apache.org> wrote:
> 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