Discussion:
Changes in Java 9
Nils Kilden-Pedersen
2017-12-03 17:02:10 UTC
Permalink
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to parse
the Coffeescript compiler, which worked fine in Java 8_144.

Coffeescript 2 compiler:
http://coffeescript.org/v2/browser-compiler/coffeescript.js

v1 also fails: http://coffeescript.org/v1/browser-compiler/coffee-script.js

Exception is:

javax.script.ScriptException: SyntaxError: unexpected in <eval> at
line number 39 at column number 249736
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:425)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.access$300(NashornScriptEngine.java:72)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:513)
at java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:92)
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.scala:115)
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompiler.scala:114)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeError.initException(NativeError.java:135)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:73)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:77)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.constructor(NativeSyntaxError.java:98)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2368$6956AA$\^eval\_.L:39-1#a#L:39-1#L:39#throwSyntaxError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#parseError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-4#o#parse(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#p(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#L:39#T#L:39(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1572$\^eval\_.:program(<eval>:41)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:652)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:517)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:420)
... 28 more


Nils Kilden-Pedersen
2017-12-03 19:39:10 UTC
Permalink
Further testing with the un-minified code (cs2
<https://unpkg.com/***@2.0.3/lib/coffeescript/browser.js>, cs1
<https://unpkg.com/***@1.12.7/lib/coffee-script/browser.js>)
reveals the true problems in JDK 9.0.1

In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
least), works in JDK 8:

<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line
number 46 at column number 45

And in cs1 it’s require that’s unresolved (also works in JDK 8):

ReferenceError: "require" is not defined in <eval> at line number 7


Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to parse
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/
browser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/browser-compiler/coffee-
script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at line number 39 at column number 249736
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:425)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.access$300(NashornScriptEngine.java:72)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:513)
at java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:92)
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.scala:115)
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompiler.scala:114)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeError.initException(NativeError.java:135)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:73)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:77)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.constructor(NativeSyntaxError.java:98)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2368$6956AA$\^eval\_.L:39-1#a#L:39-1#L:39#throwSyntaxError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#parseError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-4#o#parse(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#p(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#L:39#T#L:39(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1572$\^eval\_.:program(<eval>:41)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:652)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:517)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:420)
... 28 more

Nils Kilden-Pedersen
2017-12-03 20:08:24 UTC
Permalink
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are removed.

What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK 8_144,
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number 46 at column number 45
ReferenceError: "require" is not defined in <eval> at line number 7

Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to parse
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at line number 39 at column number 249736
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:425)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.access$300(NashornScriptEngine.java:72)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:513)
at java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:92)
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.scala:115)
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompiler.scala:114)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeError.initException(NativeError.java:135)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:73)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:77)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.constructor(NativeSyntaxError.java:98)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2368$6956AA$\^eval\_.L:39-1#a#L:39-1#L:39#throwSyntaxError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#parseError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-4#o#parse(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#p(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#L:39#T#L:39(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1572$\^eval\_.:program(<eval>:41)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:652)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:517)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:420)
... 28 more

Hannes Wallnöfer
2017-12-04 14:47:19 UTC
Permalink
Hi Nils,

Are you just evaluating the script files you linked in your first message, or trying to do some further processing?

Using the jjs tool from JDK 9.0.1 I see no errors running both versions of CoffeeScript.

Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are removed.
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK 8_144,
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number 46 at column number 45
ReferenceError: "require" is not defined in <eval> at line number 7

Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to parse
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at line number 39 at column number 249736
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:425)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.access$300(NashornScriptEngine.java:72)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:513)
at java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:92)
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.scala:115)
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompiler.scala:114)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeError.initException(NativeError.java:135)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:73)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.<init>(NativeSyntaxError.java:77)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyntaxError.constructor(NativeSyntaxError.java:98)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2368$6956AA$\^eval\_.L:39-1#a#L:39-1#L:39#throwSyntaxError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#parseError(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-4#o#parse(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-8#L:39#p(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#L:39#T#L:39(<eval>:39)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1572$\^eval\_.:program(<eval>:41)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:652)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:517)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:420)
... 28 more

Nils Kilden-Pedersen
2017-12-04 15:56:45 UTC
Permalink
Thanks for bringing this up. It made me realize that my post was incomplete.

These are the steps I take:

1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode,
{runtime: 'none'}); which returns CompiledScript that is retained and
re-used. This works fine, also on JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then call
engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code with
the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.

I’m open to better ways to achieve this, if it’s inefficient or plain wrong.


On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer <
Post by Hannes Wallnöfer
Hi Nils,
Are you just evaluating the script files you linked in your first message,
or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are removed.
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in <eval> at line number 7

Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at
line number 39 at column number 249736
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.
NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.
NashornScriptEngine.evalImpl(NashornScriptEngine.java:425)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.
NashornScriptEngine.access$300(NashornScriptEngine.java:72)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.
NashornScriptEngine$3.eval(NashornScriptEngine.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.scripting/javax.script.CompiledScript.eval(
CompiledScript.java:92)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.
scala:115)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompiler.
scala:114)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:62)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.model.ReflectiveCallable.run(
ReflectiveCallable.java:12)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod.invokeExplosively(
FrameworkMethod.java:47)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.statements.InvokeMethod.
evaluate(InvokeMethod.java:17)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(
BlockJUnit4ClassRunner.java:78)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(
BlockJUnit4ClassRunner.java:57)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(
JUnit4TestReference.java:86)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.TestExecution.
run(TestExecution.java:38)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.
runTests(RemoteTestRunner.java:539)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.
runTests(RemoteTestRunner.java:761)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.
run(RemoteTestRunner.java:461)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.
main(RemoteTestRunner.java:207)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.
NativeError.initException(NativeError.java:135)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.
NativeSyntaxError.<init>(NativeSyntaxError.java:73)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.
NativeSyntaxError.<init>(NativeSyntaxError.java:77)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.
NativeSyntaxError.constructor(NativeSyntaxError.java:98)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.
Script$Recompilation$2368$6956AA$\^eval\_.L:39-1#a#L:39-
1#L:39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.
Script$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.
L:39-1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.
39-4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.
39-8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.
39-8#L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.
Script$Recompilation$1572$\^eval\_.:program(<eval>:41)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.
ScriptFunctionData.invoke(ScriptFunctionData.java:652)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.
ScriptFunction.invoke(ScriptFunction.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.
ScriptRuntime.apply(ScriptRuntime.java:517)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.
NashornScriptEngine.evalImpl(NashornScriptEngine.java:420)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
... 28 more

Nils Kilden-Pedersen
2017-12-06 15:15:15 UTC
Permalink
What's the right place to file a bug?
Post by Nils Kilden-Pedersen
Thanks for bringing this up. It made me realize that my post was incomplete.
1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode, {runtime: 'none'}); which returns
CompiledScript that is retained and re-used. This works fine, also on
JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then
call engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code
with the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.
I’m open to better ways to achieve this, if it’s inefficient or plain wrong.

On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer <
Post by Hannes Wallnöfer
Hi Nils,
Are you just evaluating the script files you linked in your first
message, or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are
removed.
Post by Nils Kilden-Pedersen
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
cs1
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in <eval> at line number 7

On Sun, Dec 3, 2017 at 11:02 AM, Nils Kilden-Pedersen <
Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at
line number 39 at column number 249736
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.throwAsScriptException(NashornScriptEngine.java:469)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:425)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.access$300(NashornScriptEngine.java:72)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine$3.eval(NashornScriptEngine.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.scripting/javax.script.CompiledScript.eval(CompiledScri
pt.java:92)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.s
cala:115)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompil
er.scala:114)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
ke(NativeMethodAccessorImpl.java:62)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
ectiveCallable.java:12)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
ameworkMethod.java:47)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.statements.InvokeMethod.evaluate(
InvokeMethod.java:17)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:78)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:57)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
run(JUnit4TestReference.java:86)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:539)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:761)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:461)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:207)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeErr
or.initException(NativeError.java:135)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:73)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:77)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.constructor(NativeSyntaxError.java:98)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-
1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-
4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-
8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#
L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$1572$\^eval\_.:program(<eval>:41)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ctionData.invoke(ScriptFunctionData.java:652)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ction.invoke(ScriptFunction.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRun
time.apply(ScriptRuntime.java:517)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:420)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
... 28 more

Hannes Wallnöfer
2017-12-06 20:19:51 UTC
Permalink
That would be https://bugs.openjdk.java.net/ but you need an OpenJDK account to file a bug.

Alternatively, if you can send me something reproduce the bug (could be a small snippet of code) I can file it for you.

Hannes
Post by Nils Kilden-Pedersen
What's the right place to file a bug?
Post by Nils Kilden-Pedersen
Thanks for bringing this up. It made me realize that my post was incomplete.
1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode, {runtime: 'none'}); which returns
CompiledScript that is retained and re-used. This works fine, also on
JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then
call engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code
with the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.
I’m open to better ways to achieve this, if it’s inefficient or plain wrong.

On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer <
Post by Hannes Wallnöfer
Hi Nils,
Are you just evaluating the script files you linked in your first
message, or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions
of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are
removed.
Post by Nils Kilden-Pedersen
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
cs1
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in <eval> at line number 7

On Sun, Dec 3, 2017 at 11:02 AM, Nils Kilden-Pedersen <
Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at
line number 39 at column number 249736
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.throwAsScriptException(NashornScriptEngine.java:469)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:425)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.access$300(NashornScriptEngine.java:72)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine$3.eval(NashornScriptEngine.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.scripting/javax.script.CompiledScript.eval(CompiledScri
pt.java:92)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.s
cala:115)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompil
er.scala:114)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
ke(NativeMethodAccessorImpl.java:62)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
ectiveCallable.java:12)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
ameworkMethod.java:47)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.statements.InvokeMethod.evaluate(
InvokeMethod.java:17)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:78)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:57)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
run(JUnit4TestReference.java:86)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:539)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:761)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:461)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:207)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeErr
or.initException(NativeError.java:135)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:73)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:77)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.constructor(NativeSyntaxError.java:98)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-
1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-
4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-
8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#
L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$1572$\^eval\_.:program(<eval>:41)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ctionData.invoke(ScriptFunctionData.java:652)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ction.invoke(ScriptFunction.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRun
time.apply(ScriptRuntime.java:517)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:420)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
... 28 more

Nils Kilden-Pedersen
2017-12-06 21:30:16 UTC
Permalink
Hannes,

I've sent an email with zip file attachment.

Just letting you know in a separate email, in case it ends up being blocked.

Nils

On Wed, Dec 6, 2017 at 2:19 PM, Hannes Wallnöfer <
Post by Hannes Wallnöfer
That would be https://bugs.openjdk.java.net/ but you need an OpenJDK account to file a bug.
Alternatively, if you can send me something reproduce the bug (could be a
small snippet of code) I can file it for you.
Hannes
Post by Nils Kilden-Pedersen
What's the right place to file a bug?
Post by Nils Kilden-Pedersen
Thanks for bringing this up. It made me realize that my post was incomplete.
1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode, {runtime: 'none'}); which returns
CompiledScript that is retained and re-used. This works fine, also on
JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then
call engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code
with the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.
I’m open to better ways to achieve this, if it’s inefficient or plain wrong.

On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer <
Post by Hannes Wallnöfer
Hi Nils,
Are you just evaluating the script files you linked in your first
message, or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions
of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find
the
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Hannes Wallnöfer
Post by Nils Kilden-Pedersen
default parameters in the minified version, so perhaps those are
removed.
Post by Nils Kilden-Pedersen
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
On Sun, Dec 3, 2017 at 1:39 PM, Nils Kilden-Pedersen <
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
cs1
)
Post by Nils Kilden-Pedersen
Post by Hannes Wallnöfer
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in <eval> at line number 7

On Sun, Dec 3, 2017 at 11:02 AM, Nils Kilden-Pedersen <
Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at
line number 39 at column number 249736
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.throwAsScriptException(NashornScriptEngine.java:469)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:425)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.access$300(NashornScriptEngine.java:72)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine$3.eval(NashornScriptEngine.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.scripting/javax.script.CompiledScript.eval(CompiledScri
pt.java:92)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.s
cala:115)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompil
er.scala:114)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.
invoke0(Native
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Hannes Wallnöfer
Method)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
ke(NativeMethodAccessorImpl.java:62)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
ectiveCallable.java:12)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
ameworkMethod.java:47)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.statements.InvokeMethod.evaluate(
InvokeMethod.java:17)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:78)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:57)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(
ParentRunner.java:288)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Hannes Wallnöfer
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
run(JUnit4TestReference.java:86)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:539)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:761)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:461)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:207)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeErr
or.initException(NativeError.java:135)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:73)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:77)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.constructor(NativeSyntaxError.java:98)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-
1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-
4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-
8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#
L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$1572$\^eval\_.:program(<eval>:41)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ctionData.invoke(ScriptFunctionData.java:652)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ction.invoke(ScriptFunction.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRun
time.apply(ScriptRuntime.java:517)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:420)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
... 28 more

Hannes Wallnöfer
2017-12-15 12:40:04 UTC
Permalink
Hi Nils,

Thanks for the code. Unfortunately you hit a bug in optimistic types, which is enabled by default in JDK 9. I’ve filed an issue for it and have a fix for it.

https://bugs.openjdk.java.net/browse/JDK-8193508

The good news is that it is quite easy to work around this bug by disabling optimistic types. The way to do this is to use the NashornScriptEngineFactory class to create the script engine:

import jdk.nashorn.api.scripting.NashornScriptEngineFactory;

...
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine("-ot=false");

Hannes
Post by Nils Kilden-Pedersen
Hannes,
I've sent an email with zip file attachment.
Just letting you know in a separate email, in case it ends up being blocked.
Nils
That would be https://bugs.openjdk.java.net/ but you need an OpenJDK account to file a bug.
Alternatively, if you can send me something reproduce the bug (could be a small snippet of code) I can file it for you.
Hannes
Post by Nils Kilden-Pedersen
What's the right place to file a bug?
Post by Nils Kilden-Pedersen
Thanks for bringing this up. It made me realize that my post was incomplete.
1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode, {runtime: 'none'}); which returns
CompiledScript that is retained and re-used. This works fine, also on
JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then
call engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code
with the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.
I’m open to better ways to achieve this, if it’s inefficient or plain wrong.

On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer <
Post by Hannes Wallnöfer
Hi Nils,
Are you just evaluating the script files you linked in your first
message, or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions
of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are
removed.
Post by Nils Kilden-Pedersen
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
cs1
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in <eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in <eval> at line number 7

On Sun, Dec 3, 2017 at 11:02 AM, Nils Kilden-Pedersen <
Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in <eval> at
line number 39 at column number 249736
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.throwAsScriptException(NashornScriptEngine.java:469)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:425)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.access$300(NashornScriptEngine.java:72)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine$3.eval(NashornScriptEngine.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.scripting/javax.script.CompiledScript.eval(CompiledScri
pt.java:92)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.s
cala:115)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompil
er.scala:114)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
ke(NativeMethodAccessorImpl.java:62)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
ectiveCallable.java:12)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
ameworkMethod.java:47)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.statements.InvokeMethod.evaluate(
InvokeMethod.java:17)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:78)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:57)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
run(JUnit4TestReference.java:86)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:539)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:761)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:461)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:207)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Caused by: <eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeErr
or.initException(NativeError.java:135)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:73)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:77)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.constructor(NativeSyntaxError.java:98)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-
1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-
4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-
8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#
L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$1572$\^eval\_.:program(<eval>:41)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ctionData.invoke(ScriptFunctionData.java:652)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ction.invoke(ScriptFunction.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRun
time.apply(ScriptRuntime.java:517)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:420)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
... 28 more

Sundararajan Athijegannathan
2017-12-15 13:19:05 UTC
Permalink
Adding to what Hannes said. In case if you cannot modify existing code,
you can also pass options to nashorn engine via System property
"nashorn.args" - all nashorn engines created in the process will be
initialized with those options.

For example:

java -Dnashorn.args="-ot=false" Main

See also:
https://wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223+engine+notes

-Sundar
Post by Hannes Wallnöfer
Hi Nils,
Thanks for the code. Unfortunately you hit a bug in optimistic types, which is enabled by default in JDK 9. I’ve filed an issue for it and have a fix for it.
https://bugs.openjdk.java.net/browse/JDK-8193508
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
...
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine("-ot=false");
Hannes
Post by Nils Kilden-Pedersen
Hannes,
I've sent an email with zip file attachment.
Just letting you know in a separate email, in case it ends up being blocked.
Nils
That would be https://bugs.openjdk.java.net/ but you need an OpenJDK account to file a bug.
Alternatively, if you can send me something reproduce the bug (could be a small snippet of code) I can file it for you.
Hannes
Post by Nils Kilden-Pedersen
What's the right place to file a bug?
Post by Nils Kilden-Pedersen
Thanks for bringing this up. It made me realize that my post was incomplete.
1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode, {runtime: 'none'}); which returns
CompiledScript that is retained and re-used. This works fine, also on
JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then
call engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code
with the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.
I’m open to better ways to achieve this, if it’s inefficient or plain wrong.

On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer<
Post by Hannes Wallnöfer
Hi Nils,
Are you just evaluating the script files you linked in your first
message, or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions
of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are
removed.
Post by Nils Kilden-Pedersen
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
Post by Nils Kilden-Pedersen
Further testing with the un-minified code (cs2
cs1
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in<eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in<eval> at line number 7

On Sun, Dec 3, 2017 at 11:02 AM, Nils Kilden-Pedersen<
Post by Nils Kilden-Pedersen
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
the Coffeescript compiler, which worked fine in Java 8_144.
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in<eval> at
line number 39 at column number 249736
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.throwAsScriptException(NashornScriptEngine.java:469)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:425)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.access$300(NashornScriptEngine.java:72)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine$3.eval(NashornScriptEngine.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.scripting/javax.script.CompiledScript.eval(CompiledScri
pt.java:92)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.s
cala:115)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompil
er.scala:114)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
ke(NativeMethodAccessorImpl.java:62)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
invoke(DelegatingMethodAccessorImpl.java:43)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
ectiveCallable.java:12)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
ameworkMethod.java:47)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.internal.runners.statements.InvokeMethod.evaluate(
InvokeMethod.java:17)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:78)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:57)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
run(JUnit4TestReference.java:86)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:539)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:761)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:461)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:207)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Caused by:<eval>:39:249736 SyntaxError: unexpected
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeErr
or.initException(NativeError.java:135)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:73)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.<init>(NativeSyntaxError.java:77)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
taxError.constructor(NativeSyntaxError.java:98)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-
1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-
4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-
8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#
L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
cript$Recompilation$1572$\^eval\_.:program(<eval>:41)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ctionData.invoke(ScriptFunctionData.java:652)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
ction.invoke(ScriptFunction.java:513)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRun
time.apply(ScriptRuntime.java:517)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
tEngine.evalImpl(NashornScriptEngine.java:420)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
... 28 more

Nils Kilden-Pedersen
2017-12-15 22:38:08 UTC
Permalink
Excellent, that appears to work.

Thanks both!

On Fri, Dec 15, 2017 at 7:19 AM, Sundararajan Athijegannathan <
Post by Sundararajan Athijegannathan
Adding to what Hannes said. In case if you cannot modify existing code,
you can also pass options to nashorn engine via System property
"nashorn.args" - all nashorn engines created in the process will be
initialized with those options.
java -Dnashorn.args="-ot=false" Main
See also: https://wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223
+engine+notes
-Sundar
Post by Hannes Wallnöfer
Hi Nils,
Thanks for the code. Unfortunately you hit a bug in optimistic types,
which is enabled by default in JDK 9. I’ve filed an issue for it and have a
fix for it.
https://bugs.openjdk.java.net/browse/JDK-8193508
The good news is that it is quite easy to work around this bug by
disabling optimistic types. The way to do this is to use the
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
...
ScriptEngine engine = new NashornScriptEngineFactory().g
etScriptEngine("-ot=false");
Hannes
Post by Nils Kilden-Pedersen
Hannes,
I've sent an email with zip file attachment.
Just letting you know in a separate email, in case it ends up being blocked.
Nils
That would be https://bugs.openjdk.java.net/ but you need an OpenJDK
account to file a bug.
Alternatively, if you can send me something reproduce the bug (could be
a small snippet of code) I can file it for you.
Hannes
Post by Nils Kilden-Pedersen
What's the right place to file a bug?
Thanks for bringing this up. It made me realize that my post was
Post by Nils Kilden-Pedersen
incomplete.
1. Initial step: Call engine.compile with the CS compiler source +
CoffeeScript.compile(coffeeCode, {runtime: 'none'}); which returns
CompiledScript that is retained and re-used. This works fine, also on
JDK 9.0.1.
2. For subsequent Coffeescript -> Javascript transpilation, I then
call engine.createBindings()
3. Then bindings.put("coffeeCode", csCode) to associate the CS code
with the JS variable coffeeCode mentioned in initial step
4. Call CompiledScript.eval(bindings). This is the step that fails in
9.0.1.
I’m open to better ways to achieve this, if it’s inefficient or plain wrong.

On Mon, Dec 4, 2017 at 8:47 AM, Hannes Wallnöfer<
Hi Nils,
Post by Hannes Wallnöfer
Are you just evaluating the script files you linked in your first
message, or trying to do some further processing?
Using the jjs tool from JDK 9.0.1 I see no errors running both versions
of CoffeeScript.
Hannes
Post by Nils Kilden-Pedersen
Ok, the minified vs non-minified may not be identical. I cannot find the
default parameters in the minified version, so perhaps those are
removed.
Post by Nils Kilden-Pedersen
What does remain however, is that I can compile minified cs2
<http://coffeescript.org/v2/browser-compiler/coffeescript.js> on JDK
8_144,
Post by Nils Kilden-Pedersen
but not on 9.0.1.
om>
Further testing with the un-minified code (cs2
cs1
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
)
reveals the true problems in JDK 9.0.1
In cs2, it’s ES6 syntax (default args), which (unexpectedly for me at
<eval>:46:45 Expected , but found =
CoffeeScript.eval = function(code, options = {}) {
^ in<eval> at line number
46 at column number 45
Post by Nils Kilden-Pedersen
ReferenceError: "require" is not defined in<eval> at line number 7

On Sun, Dec 3, 2017 at 11:02 AM, Nils Kilden-Pedersen<
I just switched to the Java 9.0.1 runtime, and Nashorn now fails to
parse
the Coffeescript compiler, which worked fine in Java 8_144.
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
Coffeescript 2 compiler: http://coffeescript.org/v2/bro
wser-compiler/coffeescript.js
v1 also fails: http://coffeescript.org/v1/bro
wser-compiler/coffee-script.js
javax.script.ScriptException: SyntaxError: unexpected in<eval> at
line number 39 at column number 249736
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
Post by Nils Kilden-Pedersen
tEngine.throwAsScriptException(NashornScriptEngine.java:469)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
Post by Nils Kilden-Pedersen
tEngine.evalImpl(NashornScriptEngine.java:425)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
Post by Nils Kilden-Pedersen
tEngine.access$300(NashornScriptEngine.java:72)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
Post by Nils Kilden-Pedersen
tEngine$3.eval(NashornScriptEngine.java:513)
at java.scripting/javax.script.CompiledScript.eval(CompiledScri
Post by Nils Kilden-Pedersen
pt.java:92)
at scuff.js.CoffeeScriptCompiler.compile(CoffeeScriptCompiler.s
Post by Nils Kilden-Pedersen
cala:115)
at scuff.js.TestCoffeeScriptCompiler.cs2(TestCoffeeScriptCompil
Post by Nils Kilden-Pedersen
er.scala:114)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
ke0(Native
Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo
Post by Nils Kilden-Pedersen
ke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.
Post by Nils Kilden-Pedersen
invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(Refl
Post by Nils Kilden-Pedersen
ectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
Post by Nils Kilden-Pedersen
ameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(
Post by Nils Kilden-Pedersen
InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
Post by Nils Kilden-Pedersen
4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.
java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
Post by Nils Kilden-Pedersen
TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
Post by Nils Kilden-Pedersen
sts(RemoteTestRunner.java:539)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
Post by Nils Kilden-Pedersen
sts(RemoteTestRunner.java:761)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
Post by Nils Kilden-Pedersen
RemoteTestRunner.java:461)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
Post by Nils Kilden-Pedersen
RemoteTestRunner.java:207)
Caused by:<eval>:39:249736 SyntaxError: unexpected
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeErr
or.initException(NativeError.java:135)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
Post by Nils Kilden-Pedersen
taxError.<init>(NativeSyntaxError.java:73)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
Post by Nils Kilden-Pedersen
taxError.<init>(NativeSyntaxError.java:77)
at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeSyn
Post by Nils Kilden-Pedersen
taxError.constructor(NativeSyntaxError.java:98)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
39#throwSyntaxError(<eval>:39)
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
Post by Nils Kilden-Pedersen
cript$Recompilation$2364$253073AA$\^eval\_$cu1$restOf.L:39-
1#a#L:39-8#L:39#parseError(<eval>:39)
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
Post by Nils Kilden-Pedersen
cript$Recompilation$2359$\^eval\_$cu1$restOf.L:39-1#a#L:39-
4#o#parse(<eval>:39)
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
Post by Nils Kilden-Pedersen
cript$Recompilation$2343$\^eval\_$cu1$restOf.L:39-1#a#L:39-
8#L:39#p(<eval>:39)
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
Post by Nils Kilden-Pedersen
cript$Recompilation$2056$250675AA$\^eval\_.L:39-1#a#L:39-8#
L:39#T#L:39(<eval>:39)
Post by Nils Kilden-Pedersen
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.S
Post by Nils Kilden-Pedersen
cript$Recompilation$1572$\^eval\_.:program(<eval>:41)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
Post by Nils Kilden-Pedersen
ctionData.invoke(ScriptFunctionData.java:652)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFun
Post by Nils Kilden-Pedersen
ction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRun
Post by Nils Kilden-Pedersen
time.apply(ScriptRuntime.java:517)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScrip
Post by Nils Kilden-Pedersen
tEngine.evalImpl(NashornScriptEngine.java:420)
... 28 more
Post by Nils Kilden-Pedersen
Post by Nils Kilden-Pedersen

Loading...