google / google/closure-compiler

NullPointerException if --process_common_js_modules is paired with exports variable messing

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

Description

Given file proof.js
```js
var exports = {}

function itFails (name) {
exports[name] = 'anything'
}

module.exports = exports
```
and following command against v2017-06-26
```bash
java -jar closure-compiler.jar --process_common_js_modules --js proof.js
```
I hit a NPE
```
proof.js:1: WARNING - Suspicious re-assignment of "exports" variable. Did you actually intend to export something?
var exports = {}
^^^^^^^^^^^^

0 error(s), 1 warning(s)
java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.

null
Node(NAME name): proof.js:4:10
exports[name] = 'anything'
Parent(GETELEM): proof.js:4:2
exports[name] = 'anything'

at com.google.javascript.jscomp.NodeUtil.getRValueOfLValue(NodeUtil.java:4549)
at com.google.javascript.jscomp.ProcessCommonJSModules$RewriteModule.getExportedName(ProcessCommonJSModules.java:1136)
at com.google.javascript.jscomp.ProcessCommonJSModules$RewriteModule.maybeUpdateName(ProcessCommonJSModules.java:936)
at com.google.javascript.jscomp.ProcessCommonJSModules$RewriteModule.visit(ProcessCommonJSModules.java:712)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:730)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:802)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:726)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:802)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:726)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:802)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:726)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:802)
at com.google.javascript.jscomp.NodeTraversal.traverseBlockScope(NodeTraversal.java:817)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:724)
at com.google.javascript.jscomp.NodeTraversal.traverseFunction(NodeTraversal.java:761)
at com.google.javascript.jscomp.NodeTraversal.handleFunction(NodeTraversal.java:692)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:708)
at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:802)
at com.google.javascript.jscomp.NodeTraversal.handleScript(NodeTraversal.java:680)
at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:705)
at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:307)
at com.google.javascript.jscomp.NodeTraversal.traverseEs6(NodeTraversal.java:647)
at com.google.javascript.jscomp.ProcessCommonJSModules.process(ProcessCommonJSModules.java:134)
at com.google.javascript.jscomp.Compiler.processAMDAndCommonJSModules(Compiler.java:2106)
at com.google.javascript.jscomp.Compiler.parseInputs(Compiler.java:1792)
at com.google.javascript.jscomp.Compiler.parseForCompilationInternal(Compiler.java:994)
at com.google.javascript.jscomp.Compiler.access$300(Compiler.java:102)
at com.google.javascript.jscomp.Compiler$6.call(Compiler.java:974)
at com.google.javascript.jscomp.Compiler$6.call(Compiler.java:971)
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:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
... 34 more
```
(i do understand that provided code doesn't comply to CommonJS module expectations, i'm just reporting an error as i was asked by output)

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.