google/closure-compiler

NullPointerException if --process_common_js_modules is paired with exports variable messing

Open

#2,613 opened on 2017年8月10日

GitHub で見る
 (2 comments) (0 reactions) (0 assignees)Java (7,176 stars) (1,197 forks)batch import
P3bughelp wanted

説明

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)

コントリビューターガイド