Mark-<br><br>Thanks for these reports!&nbsp; I&#39;m currently working on promoting the code base into openjdk, but once that is done I&#39;ll start addressing these issues.<br><br>Regards,<br>Neal<br><br>On Sat, May 17, 2008 at 1:08 PM, Mark Mahieu &lt;<a href="mailto:mark@twistedbanana.demon.co.uk">mark@twistedbanana.demon.co.uk</a>&gt; wrote:<br>
<div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Here are three classes I&#39;d expect to be considered valid, but which don&#39;t compile. &nbsp;Not sure if I&#39;ve mentioned any of these previously, apologies if so.<br>

<br>
<br>
1) Using a closure literal on the rhs of the == and != operators yields an &quot;incomparable types&quot; error:<br>
<br>
<br>
public class IncomparableTypes {<br>
<br>
 &nbsp; &nbsp;public static void main(String[] args) {<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{=&gt; void} block = {=&gt;};<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;boolean result;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;result = {=&gt;} == block;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;result = block == {=&gt;};<br>
 &nbsp; &nbsp;}<br>
}<br>
<br>
<br>
IncomparableTypes.java:9: incomparable types: { =&gt; void} and { =&gt; void}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;result = block == {=&gt;};<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^<br>
1 error<br>
<br>
<br>
<br>
2) Using a closure literal as the expression operand of the instanceof operator results in an &quot;unexpected type&quot; error:<br>
<br>
<br>
public class UnexpectedType {<br>
<br>
 &nbsp; &nbsp;public static void main(String[] args) {<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;boolean result = {=&gt;} instanceof Object;<br>
 &nbsp; &nbsp;}<br>
}<br>
<br>
<br>
UnexpectedType.java:5: unexpected type<br>
found &nbsp; : { =&gt; void}<br>
required: reference<br>
 &nbsp; &nbsp; &nbsp; &nbsp;boolean result = {=&gt;} instanceof Object;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^<br>
1 error<br>
<br>
<br>
<br>
3) Casting a closure literal is also rejected:<br>
<br>
<br>
public class Cast {<br>
<br>
 &nbsp; &nbsp;public static void main(String[] args) {<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;foo((Object) {=&gt; &quot;Hello&quot;});<br>
 &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp;static void foo(Object o) { }<br>
<br>
 &nbsp; &nbsp;static void foo({=&gt;Object} fn) { }<br>
}<br>
<br>
<br>
Cast.java:5: &#39;)&#39; expected<br>
 &nbsp; &nbsp; &nbsp; &nbsp;foo((Object) {=&gt; &quot;Hello&quot;});<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^<br>
Cast.java:5: not a statement<br>
 &nbsp; &nbsp; &nbsp; &nbsp;foo((Object) {=&gt; &quot;Hello&quot;});<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^<br>
Cast.java:5: &#39;;&#39; expected<br>
 &nbsp; &nbsp; &nbsp; &nbsp;foo((Object) {=&gt; &quot;Hello&quot;});<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^<br>
3 errors<br>
<br>
<br>
<br>
Regards,<br><font color="#888888">
<br>
Mark<br>
<br>
<br>
</font></blockquote></div><br>