java.lang.IllegalStateException when destructuring
corrideat opened this issue · comments
Ricardo Iván Vieitez Parra commented
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
James Ring commented
Should be fixed by 1a22302.
John Lenz commented
fixed