Closed
Description
This simple code:
while (true) {
let x = null;
function f() {
x();
}
}
Gives the following trace (cmd line args: --language_in=ECMASCRIPT6_STRICT -O SIMPLE
):
INTERNAL COMPILER ERROR.
Please report this problem.
Invalid attempt to remove node: NAME $jscomp$loop$0 3 [source_file: bug_closure.js] of CALL 3 [free_call: 1] [source_file: bug_closure.js]
Node(NAME $jscomp$loop$0): bug_closure.js:3:2
function f() {
Parent(CALL): bug_closure.js:3:2
function f() {
at com.google.javascript.jscomp.NodeUtil.removeChild(NodeUtil.java:2293)
at com.google.javascript.jscomp.UnreachableCodeElimination$EliminationPass.removeNode(UnreachableCodeElimination.java:261)
at com.google.javascript.jscomp.UnreachableCodeElimination$EliminationPass.removeDeadExprStatementSafely(UnreachableCodeElimination.java:251)
at com.google.javascript.jscomp.UnreachableCodeElimination$EliminationPass.visit(UnreachableCodeElimination.java:104)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:609)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:603)
at com.google.javascript.jscomp.NodeTraversal.traverseBlockScope(NodeTraversal.java:652)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:597)
at com.google.javascript.jscomp.NodeTraversal.traverseBlockScope(NodeTraversal.java:652)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:597)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:603)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:603)
at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:295)
at com.google.javascript.jscomp.NodeTraversal.traverseEs6(NodeTraversal.java:560)
at com.google.javascript.jscomp.UnreachableCodeElimination$1.enterFunction(UnreachableCodeElimination.java:81)
Note that it works fine with var
instead of let
.