<div dir="ltr"><div>Hi Stephan,</div><div><br></div><div>Thanks for the report. Created as <a href="https://bugs.openjdk.org/browse/JDK-8348410">JDK-8348410</a>.</div><div><br></div><div>-Archie<br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Jan 23, 2025 at 4:04 AM Stephan Herrmann <<a href="mailto:stephan.herrmann@berlin.de">stephan.herrmann@berlin.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Using javac versions 23 and 24-ea it is possible to compile the following <br>
program without passing `--enable-preview`:<br>
<br>
public class Test {<br>
<br>
public static void main(String[] args) {<br>
new Test().d(true);<br>
}<br>
<br>
void d(Boolean b) {<br>
switch (b) {<br>
case true -> System.out.println("1");<br>
case false -> System.out.println("2");<br>
};<br>
}<br>
}<br>
<br>
When trying to run this program the following exception is thrown:<br>
<br>
Exception in thread "main" java.lang.BootstrapMethodError: bootstrap method <br>
initialization exception<br>
at <br>
java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:187)<br>
at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:316)<br>
at <br>
java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:275)<br>
at <br>
java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:265)<br>
at Test.d(Test.java:8)<br>
at Test.main(Test.java:4)<br>
Caused by: java.lang.IllegalArgumentException: label with illegal type found: <br>
class java.lang.Boolean<br>
at <br>
java.base/java.lang.runtime.SwitchBootstraps.verifyLabel(SwitchBootstraps.java:214)<br>
at <br>
java.base/java.lang.runtime.SwitchBootstraps.typeSwitch(SwitchBootstraps.java:188)<br>
at <br>
java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:143)<br>
... 5 more<br>
<br>
Only when running with --enable-preview the program executes as expected.<br>
<br>
This confirms that the compiler should have checked the preview flag, so that <br>
execution without --enable-preview would signal the following, rather than the <br>
BootstrapMethodError:<br>
<br>
Error: LinkageError occurred while loading main class Test<br>
java.lang.UnsupportedClassVersionError: Preview features are not <br>
enabled for Test (class file version 67.65535). Try running with '--enable-preview'<br>
<br>
<br>
The same observation also holds for other pairs of types like Long + long.<br>
<br>
best,<br>
Stephan<br>
</blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature">Archie L. Cobbs<br></div>