Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8200215

17th loop of "let foo = ''"; throws ReferenceError

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 11
    • 9, 10
    • core-libs
    • None
    • b07
    • generic
    • generic

      Reported via nashorn-dev alias by Jesse Schulman:

      http://mail.openjdk.java.net/pipermail/nashorn-dev/2018-March/007349.html

      File: LetReproducer.java

      import jdk.nashorn.api.scripting.NashornScriptEngine;
      import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
      import jdk.nashorn.api.scripting.ScriptObjectMirror;

      public class LetReproducer {

          public static void main(String[] args) {
              NashornScriptEngineFactory factory = new
      NashornScriptEngineFactory();
              NashornScriptEngine engine = (NashornScriptEngine)
      factory.getScriptEngine(new String[]{"--no-java", "-strict",
                       "--language=es6"});
              ScriptObjectMirror bindings = (ScriptObjectMirror)
      engine.createBindings();
              for (int i = 0; i < 17; i++) {
                  try {
                      bindings.eval("let foo = '';\n");
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          }
      }

      Stack trace as follows:

      <eval>:1 ReferenceError: "foo" is not defined
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:278)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.AccessorProperty.checkUndeclared(AccessorProperty.java:571)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.AccessorProperty.getSetter(AccessorProperty.java:609)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.AccessorProperty.invokeSetter(AccessorProperty.java:460)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.AccessorProperty.setValue(AccessorProperty.java:483)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.FindProperty.setValue(FindProperty.java:260)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3097)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3176)
      at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1$\^eval\_/884452399.:program(<eval>:1)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655)
      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:527)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Context.eval(Context.java:861)
      at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Context.eval(Context.java:796)
      at jdk.scripting.nashorn/jdk.nashorn.api.scripting.ScriptObjectMirror$2.call(ScriptObjectMirror.java:174)
      at jdk.scripting.nashorn/jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:857)
      at jdk.scripting.nashorn/jdk.nashorn.api.scripting.ScriptObjectMirror.eval(ScriptObjectMirror.java:164)
      at LetReproducer.main(LetReproducer.java:18)

            sundar Sundararajan Athijegannathan
            sundar Sundararajan Athijegannathan
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: