google / closure-compiler

A JavaScript checker and optimizer.

Home Page:https://developers.google.com/closure/compiler/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java.lang.IllegalStateException when destructuring

corrideat opened this issue · comments

When compiling a file that uses destructuring, the compiler fails with an IllegalStateException. This appears to happen regardless of the flags used, and it happens when destructuring using nested computed properties.

Minimal example:

// This works
let {["x"]:foo}={["x"]:"foo"}
// This doesn't work
let {["x"]:{["y"]:bar}}={["x"]:{["y"]:"foo"}}
// However, the following would work (when uncommented)
// let {"x":{"y":bar}}={["x"]:{["y"]:"foo"}}
// OPTIONAL console.log to see outputs
console.log([foo, bar])

Running npx google-closure-compiler < example.js gives:

The compiler is waiting for input via stdin.
java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.

null
  Node(COMPUTED_PROP): stdin:4:5
let {["x"]:{["y"]:bar}}={["x"]:{["y"]:"foo"}}
  Parent(OBJECT_PATTERN): stdin:4:4
let {["x"]:{["y"]:bar}}={["x"]:{["y"]:"foo"}}

        at com.google.javascript.jscomp.Compiler.throwInternalError(Compiler.java:3243)
        at com.google.javascript.jscomp.NodeTraversal.throwUnexpectedException(NodeTraversal.java:509)
        at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:529)
        at com.google.javascript.jscomp.NodeTraversal$Builder.traverse(NodeTraversal.java:465)
        at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:535)
        at com.google.javascript.jscomp.ConvertToDottedProperties.process(ConvertToDottedProperties.java:39)
        at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:240)
        at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:179)
        at com.google.javascript.jscomp.Compiler.performFinalizations(Compiler.java:2937)
        at com.google.javascript.jscomp.Compiler.lambda$stage3Passes$7(Compiler.java:1002)
        at com.google.javascript.jscomp.CompilerExecutor.lambda$runInCompilerThread$0(CompilerExecutor.java:100)
        at java.base@17.0.5/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base@17.0.5/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base@17.0.5/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base@17.0.5/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
Caused by: java.lang.IllegalStateException
        at com.google.common.base.Preconditions.checkState(Preconditions.java:486)
        at com.google.javascript.rhino.IR.stringKey(IR.java:682)
        at com.google.javascript.jscomp.ConvertToDottedProperties.visit(ConvertToDottedProperties.java:80)
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:963)
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:953)
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:953)
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:953)
        at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:1131)
        at com.google.javascript.jscomp.NodeTraversal.handleScript(NodeTraversal.java:847)
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:902)
        at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:953)
        at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:526)
        ... 14 more

Should be fixed by 1a22302.

fixed