google/closure-compiler

Self-assign failure under ADVANCED

Aperta

#1899 aperta il 18 lug 2016

 (1 commento) (0 reazioni) (0 assegnatari)Java (1197 fork)batch import
help wanted

Metriche repository

Star
 (7176 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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)

Guida contributor