google/closure-compiler

INTERNAL COMPILER ERROR - third_party and jscomp_error conflict

Open

#2,441 建立於 2017年4月16日

在 GitHub 查看
 (4 留言) (0 反應) (0 負責人)Java (7,176 star) (1,197 fork)batch import
P3help wanted

描述

Background

I was trying to run the Closure Compiler on the JS snippet provided by Google Analytics

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-123456789-1', 'auto');
ga('send', 'pageview');

during my build and noticed it didn't like my combination of default flags for regular scripts and added command-line flags for this one file. I've simplified the snippet and arguments down to the smallest amount with a reproducible error. I am filing this bug because closure told me to.

test.js

(function() {
    [].push(arguments);
})();

Runtime error

$ java -jar closure-compiler-v20170409.jar --third_party --jscomp_error '*' test.js
java.lang.RuntimeException: java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.

only implemented in ClosureCodingConvention
  Node(CALL): test.js:1:0
(function() {
  Parent(EXPR_RESULT): test.js:1:0
(function() {

	at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:126)
	at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:753)
	at com.google.javascript.jscomp.Compiler.compile(Compiler.java:723)
	at com.google.javascript.jscomp.Compiler.compile(Compiler.java:693)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.doRun(AbstractCommandLineRunner.java:1080)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.run(AbstractCommandLineRunner.java:492)
	at com.google.javascript.jscomp.CommandLineRunner.main(CommandLineRunner.java:1898)
Caused by: java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.

only implemented in ClosureCodingConvention
  Node(CALL): test.js:1:0
(function() {
  Parent(EXPR_RESULT): test.js:1:0
(function() {

	at com.google.javascript.jscomp.CodingConventions$DefaultCodingConvention.extractClassNameIfProvide(CodingConventions.java:438)
	at com.google.javascript.jscomp.CheckProvides$CheckProvidesCallback.visit(CheckProvides.java:70)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:639)
	at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:711)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:635)
	at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:711)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:635)
	at com.google.javascript.jscomp.NodeTraversal.traverseChildren(NodeTraversal.java:711)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:635)
	at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:311)
	at com.google.javascript.jscomp.NodeTraversal.traverseEs6(NodeTraversal.java:582)
	at com.google.javascript.jscomp.CheckProvides.hotSwapScript(CheckProvides.java:52)
	at com.google.javascript.jscomp.CheckProvides.process(CheckProvides.java:45)
	at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:304)
	at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:236)
	at com.google.javascript.jscomp.Compiler.check(Compiler.java:892)
	at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:781)
	at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:87)
	at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:726)
	at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:723)
	at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:91)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.UnsupportedOperationException: only implemented in ClosureCodingConvention
	... 25 more

貢獻者指南