<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
code
{mso-style-priority:99;
font-family:"Courier New";}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
span.token
{mso-style-name:token;}
span.EmailStyle23
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Max,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">FYI – <a href="https://bugs.openjdk.org/browse/JDK-8308305">
https://bugs.openjdk.org/browse/JDK-8308305</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-Michel<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">kulla-dev <kulla-dev-retn@openjdk.org> on behalf of Max Rydahl Andersen <manderse@redhat.com><br>
<b>Date: </b>Tuesday, May 16, 2023 at 3:53 PM<br>
<b>To: </b>kulla-dev@openjdk.org <kulla-dev@openjdk.org><br>
<b>Subject: </b>jshell --enable-preview --execution=local bug?<o:p></o:p></span></p>
</div>
<div>
<div>
<p><span style="font-family:"Arial",sans-serif">Hi,<o:p></o:p></span></p>
<p><span style="font-family:"Arial",sans-serif">As part of adding </span><code><span style="font-size:10.0pt;color:black;background:#F7F7F7">--enable-preview</span></code><span style="font-family:"Arial",sans-serif"> support to
<a href="https://github.com/jbangdev/jbang/releases/tag/v0.107.0"><span style="color:#3983C4">JBang 0.107</span></a> I spotted this discrepancy in jshell behaviour. Is this to be expected or a bug?<o:p></o:p></span></p>
<p><span style="font-family:"Arial",sans-serif">First what is expected right behaviour:<o:p></o:p></span></p>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7;border-radius: 5px 5px 5px 5px;overflow-x: auto;max-width:90vw"><code><span style="color:black;background:#F7F7F7">$ jshell --enable-preview<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> Welcome to JShell -- Version </span></code><span class="token"><span style="color:#990055;background:#F7F7F7">21</span></span><code><span style="color:black;background:#F7F7F7">-ea<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> For an introduction type: /help intro<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7"><o:p> </o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">jshell</span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">></span></span><code><span style="color:black;background:#F7F7F7"> var </span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">name</span><span style="color:#9A6E3A;background:#F7F7F7">=</span><span style="color:#669900;background:#F7F7F7">"test"</span><span style="color:#999999;background:#F7F7F7">;</span></span><code><span style="color:black;background:#F7F7F7"> STR.</span></code><span class="token"><span style="color:#669900;background:#F7F7F7">"\{name} test"</span><span style="color:#999999;background:#F7F7F7">;</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">name </span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">==></span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#669900;background:#F7F7F7">"test"</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#EE9900;background:#F7F7F7">$2</span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">==></span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#669900;background:#F7F7F7">"test test"</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7"><o:p> </o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">jshell</span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">></span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">$2</span></span><code><span style="color:black;background:#F7F7F7">.length</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">();</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#EE9900;background:#F7F7F7">$3</span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">==></span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#990055;background:#F7F7F7">9</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<p><span style="font-family:"Arial",sans-serif">but now when running with </span>
<code><span style="font-size:10.0pt;color:black;background:#F7F7F7">--execution=local</span></code><span style="font-family:"Arial",sans-serif">:<o:p></o:p></span></p>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7;border-radius: 5px 5px 5px 5px;overflow-x: auto;max-width:90vw"><code><span style="color:black;background:#F7F7F7">jshell --enable-preview </span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">--execution</span><span style="color:#9A6E3A;background:#F7F7F7">=</span></span><code><span style="color:black;background:#F7F7F7">local<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> Welcome to JShell -- Version </span></code><span class="token"><span style="color:#990055;background:#F7F7F7">21</span></span><code><span style="color:black;background:#F7F7F7">-ea<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> For an introduction type: /help intro<o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7"><o:p> </o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">jshell</span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">></span></span><code><span style="color:black;background:#F7F7F7"> var </span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">name</span><span style="color:#9A6E3A;background:#F7F7F7">=</span><span style="color:#669900;background:#F7F7F7">"test"</span><span style="color:#999999;background:#F7F7F7">;</span></span><code><span style="color:black;background:#F7F7F7"> STR.</span></code><span class="token"><span style="color:#669900;background:#F7F7F7">"\{name} test"</span><span style="color:#999999;background:#F7F7F7">;</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">name </span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">==></span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#669900;background:#F7F7F7">"test"</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#EE9900;background:#F7F7F7">$2</span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">==></span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7"><o:p> </o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">jshell</span></code><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">></span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">$2</span></span><code><span style="color:black;background:#F7F7F7">.length</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">();</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> Exception java.lang.UnsupportedClassVersionError: Preview features are not enabled </span></code><span class="token"><span style="color:#0077AA;background:#F7F7F7">for</span></span><code><span style="color:black;background:#F7F7F7"> REPL/</span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">$JShell$12</span></span><code><span style="color:black;background:#F7F7F7"> </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">class </span></code><span class="token"><span style="color:#DD4A68;background:#F7F7F7">file</span></span><code><span style="color:black;background:#F7F7F7"> version </span></code><span class="token"><span style="color:#990055;background:#F7F7F7">65.65535</span><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7">. Try running with </span></code><span class="token"><span style="color:#669900;background:#F7F7F7">'--enable-preview'</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at ClassLoader.defineClass1 </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">Native Method</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at ClassLoader.defineClass </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">ClassLoader.java:1018</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at SecureClassLoader.defineClass </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">SecureClassLoader.java:150</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at DefaultLoaderDelegate</span></code><span class="token"><span style="color:#EE9900;background:#F7F7F7">$RemoteClassLoader</span></span><code><span style="color:black;background:#F7F7F7">.findClass </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">DefaultLoaderDelegate.java:156</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at ClassLoader.loadClass </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">ClassLoader.java:593</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at ClassLoader.loadClass </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span></span><code><span style="color:black;background:#F7F7F7">ClassLoader.java:526</span></code><span class="token"><span style="color:#999999;background:#F7F7F7">)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><span class="token"><span style="color:#9A6E3A;background:#F7F7F7">|</span></span><code><span style="color:black;background:#F7F7F7"> at </span></code><span class="token"><span style="color:#999999;background:#F7F7F7">(</span><span style="color:slategray;background:#F7F7F7">#3:1)</span></span><code><span style="color:black;background:#F7F7F7"><o:p></o:p></span></code></pre>
<p><span style="font-family:"Arial",sans-serif">I found that by duplicating </span>
<code><span style="font-size:10.0pt;color:black;background:#F7F7F7">--enable-preview</span></code><span style="font-family:"Arial",sans-serif"> in runtime options fixes things:<o:p></o:p></span></p>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7;border-radius: 5px 5px 5px 5px;overflow-x: auto;max-width:90vw"><code><span style="color:black;background:#F7F7F7">$ jshell --enable-preview --execution=local -J--enable-preview</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">| Welcome to JShell -- Version 21-ea</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">| For an introduction type: /help intro</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="background:#F7F7F7"><o:p> </o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">jshell> var name="test"; STR."\{name} test";</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">name ==> "test"</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">$2 ==> "test test"</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="background:#F7F7F7"><o:p> </o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">jshell> $2.length();</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<pre style="mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7"><code><span style="color:black;background:#F7F7F7">$3 ==> 9</span><span style="background:#F7F7F7"><o:p></o:p></span></code></pre>
<p><span style="font-family:"Arial",sans-serif">Seems like a bug to me, wdyt? and where to open/report this best or is it enough here?<o:p></o:p></span></p>
<p><span style="font-family:"Arial",sans-serif">/max<br>
<a href="https://xam.dk/about"><span style="color:#3983C4">https://xam.dk/about</span></a><o:p></o:p></span></p>
</div>
</div>
</div>
</body>
</html>