google/closure-compiler

Self-assign failure under ADVANCED

Open

#1 899 ouverte le 18 juil. 2016

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)Java (1 197 forks)batch import
help wanted

Métriques du dépôt

Stars
 (7 176 stars)
Métriques de merge PR
 (Merge moyen 3j 4h) (1 PR mergée en 30 j)

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)

Guide contributeur