google/closure-compiler

Self-assign failure under ADVANCED

Open

#1,899 opened on 2016年7月18日

GitHub で見る
 (1 comment) (0 reactions) (0 assignees)Java (1,197 forks)batch import
help wanted

Repository metrics

Stars
 (7,176 stars)
PR merge metrics
 (平均マージ 3d 4h) (30d で 1 merged PR)

説明

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)

コントリビューターガイド