google/closure-compiler

NullPointerException if --process_common_js_modules is paired with exports variable messing

Open

#2613 aperta il 10 ago 2017

Vedi su GitHub
 (2 commenti) (0 reazioni) (0 assegnatari)Java (1197 fork)batch import
P3bughelp wanted

Metriche repository

Star
 (7176 star)
Metriche merge PR
 (Merge medio 12g 15h) (1 PR mergiata in 30 g)

Descrizione

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)

Guida contributor