google/closure-compiler

Self-assign failure under ADVANCED

Open

#1899 opened on Jul 18, 2016

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Java (7,176 stars) (1,197 forks)batch import
help wanted

Description

Let self.js contain:

goog.provide('x');
x.y = x.y;

Then:

$ java -jar closure-compiler-v20160713.jar --compilation_level ADVANCED --js self.js --js_output_file self-compiled.js
java.lang.NullPointerException
    at com.google.javascript.rhino.Node.replaceChild(Node.java:862)
    at com.google.javascript.jscomp.CollapseProperties.inlineGlobalAliasIfPossible(CollapseProperties.java:255)
    at com.google.javascript.jscomp.CollapseProperties.inlineAliases(CollapseProperties.java:177)
    at com.google.javascript.jscomp.CollapseProperties.process(CollapseProperties.java:113)
    at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:285)
    at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:217)
    at com.google.javascript.jscomp.Compiler.optimize(Compiler.java:2008)
    at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:735)
    at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:83)
    at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:678)
    at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:675)
    at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:93)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

With older versions of the compiler you'd get a "node is not a child" error:

$ java -jar closure-compiler-v20160315.jar --compilation_level ADVANCED --js self.js --js_output_file self-compiled.js
java.lang.RuntimeException: node is not a child
    at com.google.javascript.rhino.Node.getChildBefore(Node.java:627)
    at com.google.javascript.rhino.Node.replaceChild(Node.java:797)
    at com.google.javascript.jscomp.CollapseProperties.inlineGlobalAliasIfPossible(CollapseProperties.java:255)
    at com.google.javascript.jscomp.CollapseProperties.inlineAliases(CollapseProperties.java:177)
    at com.google.javascript.jscomp.CollapseProperties.process(CollapseProperties.java:113)
    at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:285)
    at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:217)
    at com.google.javascript.jscomp.Compiler.optimize(Compiler.java:1904)
    at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:700)
    at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:83)
    at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:651)
    at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:648)
    at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:93)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Contributor guide