google/closure-compiler

INTERNAL COMPILER ERROR - third_party and jscomp_error conflict

Open

#2441 aperta il 16 apr 2017

Vedi su GitHub
 (4 commenti) (0 reazioni) (0 assegnatari)Java (1197 fork)batch import
P3help wanted

Metriche repository

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

Descrizione

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

Guida contributor