provegard / ncdbg

A debugger for Nashorn that uses Chrome DevTools as frontend
BSD 3-Clause "New" or "Revised" License
31 stars 5 forks source link

Error when evaluating a free variable inside a `with` block #93

Closed provegard closed 6 years ago

provegard commented 6 years ago

Given code like this:

var x;
with (obj) {
    x = value;
}
return x;

...evaluation of value at the assignment line gives:

Uncaught java.lang.ClassCastException: Cannot cast jdk.nashorn.internal.scripts.JD to jdk.nashorn.internal.scripts.JD4
provegard commented 6 years ago

Stack trace:

java.lang.ClassCastException: Cannot cast jdk.nashorn.internal.scripts.JO to jdk.nashorn.internal.scripts.JO4
    at java.lang.invoke.MethodHandleImpl.newClassCastException(MethodHandleImpl.java:361)
    at java.lang.invoke.MethodHandleImpl.castReference(MethodHandleImpl.java:356)
    at jdk.nashorn.internal.scripts.Script$6$\^eval\_.:program(<eval>:1)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.internal.runtime.Context.eval(Context.java:738)
    at jdk.nashorn.internal.runtime.Context.eval(Context.java:673)
    at jdk.nashorn.internal.runtime.ScriptRuntime.DEBUGGER(ScriptRuntime.java:583)