<div class="gmail_quote">On Mon, Aug 9, 2010 at 8:00 AM, Andrew Dinn <span dir="ltr">&lt;<a href="mailto:adinn@redhat.com">adinn@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<a href="http://mail.openjdk.java.net/pipermail/compiler-dev/2010-August/002253.html" target="_blank">http://mail.openjdk.java.net/pipermail/compiler-dev/2010-August/002253.html</a><br>
<br>
The JVM spec appears to indicate that SYNTHETIC merely means not present in the source code. The associated thread mentioned something about the language spec providing a different  meaning. Can you explain where exactly your definition above comes from?<br>

</blockquote><div><br>It comes from the practice of implementing the language.  In other words, that was the working definition that we used, even though the definition was never published in a publicly available document.  We never did get around to producing a compiler specification, which would have been the right place to document it.  As a simple example, the compiler-provided default constructor is added by the compiler, but it is not synthetic because it is supposed to be visible for the purposes of the language.  The synthetic flag was systematically added to precisely those symbols that should not be visible in the language.<br>

</div></div>