google/closure-compiler

NullPointerException if --process_common_js_modules is paired with exports variable messing

Open

#2.613 aberto em 10 de ago. de 2017

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)Java (1.197 forks)batch import
P3bughelp wanted

Métricas do repositório

Stars
 (7.176 stars)
Métricas de merge de PR
 (Mesclagem média 3d 4h) (1 fundiu PR em 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)

Guia do colaborador