google/closure-compiler
在 GitHub 查看NullPointerException if --process_common_js_modules is paired with exports variable messing
Open
#2,613 建立於 2017年8月10日
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)