google / google/closure-compiler

Self-assign failure under ADVANCED

Open
#1,899 1 comment 0 reactions 0 assignees View on GitHub
help wanted
Dominant language
JavaScript
Stars
7.7k
Forks
1.2k
Avg merge
2d 12h
Merged PRs (30d)
6

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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.