<div dir="ltr">Hi, I used javac 1.8.0_25 with this code:<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">package com.example;<br>import java.util.function.Function;<br>public class MakeVerifyError {<br>    public void foo() {<br>        Boom es = new Boom();<br>        go(() -> es.test(Crash::new));<br>    }<br>    private static void go(Runnable run) {}<br>    public class Crash { public Crash(Boom e) {} }<br>    public static class Boom { public void test(Function<Boom, ?> ctor) {} }<br>    public static void main(String[] args) {}<br>}</blockquote><br>And this was the result:<div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">java.lang.VerifyError: Bad type on operand stack<br>Exception Details:<br>  Location:<br>    com/example/MakeVerifyError.lambda$foo$0(Lcom/example/MakeVerifyError$Boom;)V @2: invokedynamic<br>  Reason:<br>    Type 'com/example/MakeVerifyError$Boom' (current frame, stack[1]) is not assignable to 'com/example/MakeVerifyError'<br>  Current Frame:<br>    bci: @2<br>    flags: { }<br>    locals: { 'com/example/MakeVerifyError$Boom' }<br>    stack: { 'com/example/MakeVerifyError$Boom', 'com/example/MakeVerifyError$Boom' }<br>  Bytecode:<br>    0x0000000: 2a2a ba00 0600 00b6 0007 b1            <br><span class="" style="white-space:pre">      </span>at java.lang.Class.getDeclaredMethods0(Native Method)<br><span class="" style="white-space:pre">   </span>at java.lang.Class.privateGetDeclaredMethods(Class.java:2693)<br><span class="" style="white-space:pre">   </span>at java.lang.Class.privateGetMethodRecursive(Class.java:3040)<br><span class="" style="white-space:pre">   </span>at java.lang.Class.getMethod0(Class.java:3010)<br><span class="" style="white-space:pre">  </span>at java.lang.Class.getMethod(Class.java:1776)<br><span class="" style="white-space:pre">   </span>at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)<br><span class="" style="white-space:pre">       </span>at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)<br>Exception in thread "main" Java Result: 1</blockquote></div><div><br></div><div>If the 'static' modifier is added to the Crash class, it works fine.<br></div><div>If the 'test' method call is moved to outside the lambda, it works fine.</div><div>If the Boom object is instantiated inside the lambda, it fails to load the class:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Error: Could not find or load main class com.example.MakeVerifyError<br>Java Result: 1</blockquote><div><br></div><div>So, obviously this looks like a compiler bug.</div><div>Do somebody already saw that before?<br><br>Victor Williams Stafusa da Silva</div></div></div>