google/closure-compiler

NullPointerException if --process_common_js_modules is paired with exports variable messing

Open

#2 613 ouverte le 10 août 2017

Voir sur GitHub
 (2 commentaires) (0 réactions) (0 assignés)Java (1 197 forks)batch import
P3bughelp wanted

Métriques du dépôt

Stars
 (7 176 stars)
Métriques de merge PR
 (Merge moyen 3j 4h) (1 PR mergée en 30 j)

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)

Guide contributeur