google/closure-compiler

NullPointerException if --process_common_js_modules is paired with exports variable messing

Open

#2,613 opened on Aug 10, 2017

View on GitHub
 (2 comments) (0 reactions) (0 assignees)Java (1,197 forks)batch import
P3bughelp wanted

Repository metrics

Stars
 (7,176 stars)
PR merge metrics
 (Avg merge 3d 4h) (1 merged PR in 30d)

Description

Given file proof.js

var exports = {}

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

module.exports = exports

and following command against v2017-06-26

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