<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p>Hi Max,</p>
    <p><br>
    </p>
    <p>I've filled:</p>
    <p><a class="moz-txt-link-freetext" href="https://bugs.openjdk.org/browse/JDK-8308305">https://bugs.openjdk.org/browse/JDK-8308305</a></p>
    <p><br>
    </p>
    <p>Thanks for the report.</p>
    <p><br>
    </p>
    <p>Jan</p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 17. 05. 23 0:52, Max Rydahl Andersen
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:D3690861-D443-4810-8477-114DE11383B7@redhat.com">
      
      <div style="font-family: sans-serif;">
        <div class="markdown" style="white-space: normal;">
          <p dir="auto">Hi,</p>
          <p dir="auto">As part of adding <code style="margin: 0 0;
              padding: 0 0.25em; border-radius: 3px; background-color:
              #F7F7F7;">--enable-preview</code> support to <a href="https://github.com/jbangdev/jbang/releases/tag/v0.107.0" style="color: #3983C4;" moz-do-not-send="true">JBang 0.107</a>
            I spotted this discrepancy in jshell behaviour. Is this to
            be expected or a bug?</p>
          <p dir="auto">First what is expected right behaviour:</p>
          <pre class="highlighted" style="margin-left: 15px; margin-right: 15px; padding: 5px; background-color: #F7F7F7; border-radius: 5px 5px 5px 5px; overflow-x: auto; max-width: 90vw; color: black;"><code style="margin: 0 0; border-radius: 3px; background-color: #F7F7F7; padding: 0px;">$ jshell --enable-preview
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>  Welcome to JShell -- Version <span class="token number" style="color: #905;">21</span>-ea
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>  For an introduction type: /help intro

jshell<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> var <span class="token assign-left variable" style="color: #e90;">name</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">=</span><span class="token string" style="color: #690;">"test"</span><span class="token punctuation" style="color: #999;">;</span> STR.<span class="token string" style="color: #690;">"\{name} test"</span><span class="token punctuation" style="color: #999;">;</span>
name <span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">==</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> <span class="token string" style="color: #690;">"test"</span>
<span class="token variable" style="color: #e90;">$2</span> <span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">==</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> <span class="token string" style="color: #690;">"test test"</span>

jshell<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> <span class="token variable" style="color: #e90;">$2</span>.length<span class="token punctuation" style="color: #999;">(</span><span class="token punctuation" style="color: #999;">)</span><span class="token punctuation" style="color: #999;">;</span>
<span class="token variable" style="color: #e90;">$3</span> <span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">==</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> <span class="token number" style="color: #905;">9</span>
</code></pre>
          <p dir="auto">but now when running with <code style="margin:
              0 0; padding: 0 0.25em; border-radius: 3px;
              background-color: #F7F7F7;">--execution=local</code>:</p>
          <pre class="highlighted" style="margin-left: 15px; margin-right: 15px; padding: 5px; background-color: #F7F7F7; border-radius: 5px 5px 5px 5px; overflow-x: auto; max-width: 90vw; color: black;"><code style="margin: 0 0; border-radius: 3px; background-color: #F7F7F7; padding: 0px;">jshell --enable-preview <span class="token parameter variable" style="color: #e90;">--execution</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">=</span>local
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>  Welcome to JShell -- Version <span class="token number" style="color: #905;">21</span>-ea
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>  For an introduction type: /help intro

jshell<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> var <span class="token assign-left variable" style="color: #e90;">name</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">=</span><span class="token string" style="color: #690;">"test"</span><span class="token punctuation" style="color: #999;">;</span> STR.<span class="token string" style="color: #690;">"\{name} test"</span><span class="token punctuation" style="color: #999;">;</span>
name <span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">==</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> <span class="token string" style="color: #690;">"test"</span>
<span class="token variable" style="color: #e90;">$2</span> <span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">==</span><span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span>

jshell<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">></span> <span class="token variable" style="color: #e90;">$2</span>.length<span class="token punctuation" style="color: #999;">(</span><span class="token punctuation" style="color: #999;">)</span><span class="token punctuation" style="color: #999;">;</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>  Exception java.lang.UnsupportedClassVersionError: Preview features are not enabled <span class="token keyword" style="color: #07a;">for</span> REPL/<span class="token variable" style="color: #e90;">$JShell</span><span class="token variable" style="color: #e90;">$12</span> <span class="token punctuation" style="color: #999;">(</span>class <span class="token function" style="color: #DD4A68;">file</span> version <span class="token number" style="color: #905;">65.65535</span><span class="token punctuation" style="color: #999;">)</span>. Try running with <span class="token string" style="color: #690;">'--enable-preview'</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at ClassLoader.defineClass1 <span class="token punctuation" style="color: #999;">(</span>Native Method<span class="token punctuation" style="color: #999;">)</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at ClassLoader.defineClass <span class="token punctuation" style="color: #999;">(</span><a class="moz-txt-link-freetext" href="ClassLoader.java:1018">ClassLoader.java:1018</a><span class="token punctuation" style="color: #999;">)</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at SecureClassLoader.defineClass <span class="token punctuation" style="color: #999;">(</span><a class="moz-txt-link-freetext" href="SecureClassLoader.java:150">SecureClassLoader.java:150</a><span class="token punctuation" style="color: #999;">)</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at DefaultLoaderDelegate<span class="token variable" style="color: #e90;">$RemoteClassLoader</span>.findClass <span class="token punctuation" style="color: #999;">(</span><a class="moz-txt-link-freetext" href="DefaultLoaderDelegate.java:156">DefaultLoaderDelegate.java:156</a><span class="token punctuation" style="color: #999;">)</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at ClassLoader.loadClass <span class="token punctuation" style="color: #999;">(</span><a class="moz-txt-link-freetext" href="ClassLoader.java:593">ClassLoader.java:593</a><span class="token punctuation" style="color: #999;">)</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at ClassLoader.loadClass <span class="token punctuation" style="color: #999;">(</span><a class="moz-txt-link-freetext" href="ClassLoader.java:526">ClassLoader.java:526</a><span class="token punctuation" style="color: #999;">)</span>
<span class="token operator" style="color: #9a6e3a; background: hsla(0, 0%, 100%, .5);">|</span>        at <span class="token punctuation" style="color: #999;">(</span><span class="token comment" style="color: slategray;">#3:1)</span>
</code></pre>
          <p dir="auto">I found that by duplicating <code style="margin: 0 0; padding: 0 0.25em; border-radius: 3px;
              background-color: #F7F7F7;">--enable-preview</code> in
            runtime options fixes things:</p>
          <pre style="margin-left: 15px; margin-right: 15px; padding: 5px; background-color: #F7F7F7; border-radius: 5px 5px 5px 5px; overflow-x: auto; max-width: 90vw;"><code style="margin: 0 0; border-radius: 3px; background-color: #F7F7F7; padding: 0px;">$ jshell --enable-preview --execution=local -J--enable-preview
|  Welcome to JShell -- Version 21-ea
|  For an introduction type: /help intro

jshell> var name="test"; STR."\{name} test";
name ==> "test"
$2 ==> "test test"

jshell> $2.length();
$3 ==> 9
</code></pre>
          <p dir="auto">Seems like a bug to me, wdyt? and where to
            open/report this best or is it enough here?</p>
          <p dir="auto">/max<br>
            <a href="https://xam.dk/about" style="color: #3983C4;" moz-do-not-send="true" class="moz-txt-link-freetext">https://xam.dk/about</a></p>
        </div>
      </div>
    </blockquote>
  </body>
</html>