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.buck...@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 >> >>