Skip to content

JsChecker crashes when assigning an arrow function to a var in a class #496

@mbrukman

Description

@mbrukman

I'm using latest commit of rules_closure because the latest release (0.10.0) is quite old (Oct 2019), and I've run into similar issues there as well.

Here's a relevant excerpt from my WORKSPACE:

git_repository(
    name = "io_bazel_rules_closure",
    remote = "https://github.com/bazelbuild/rules_closure.git",
    commit = "62746bdd1087c1198a81143e7d8ef3d144a43c0f",
)

I've created closure_js_library() and closure_js_binary() rules to compile Preact Todo MVC, but I'm running into various compiler errors.

Here's a minified example (index.min.js):

class A {
  b = c => {};
}

Here's the failure:

$ bazel-out/host/bin/external/io_bazel_rules_closure/java/io/bazel/rules/closure/ClosureWorker \
      JsChecker --src index.min.js

which results in the following output:

ERROR: Program threw uncaught exception with args: JsChecker --src index.min.js
java.lang.RuntimeException: Exception parsing "index.min.js"
	at com.google.javascript.jscomp.parsing.ParserRunner.parse(ParserRunner.java:155)
	at com.google.javascript.jscomp.JsAst.parse(JsAst.java:152)
	at com.google.javascript.jscomp.JsAst.getAstRoot(JsAst.java:55)
	at com.google.javascript.jscomp.CompilerInput.getAstRoot(CompilerInput.java:133)
	at com.google.javascript.jscomp.Compiler.parseInputs(Compiler.java:1714)
	at com.google.javascript.jscomp.Compiler.parseForCompilationInternal(Compiler.java:937)
	at com.google.javascript.jscomp.Compiler.lambda$parseForCompilation$4(Compiler.java:920)
	at com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:129)
	at com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:824)
	at com.google.javascript.jscomp.Compiler.parseForCompilation(Compiler.java:918)
	at com.google.javascript.jscomp.Compiler.compile(Compiler.java:674)
	at com.google.javascript.jscomp.JsChecker.run(JsChecker.java:255)
	at com.google.javascript.jscomp.JsChecker.access$300(JsChecker.java:63)
	at com.google.javascript.jscomp.JsChecker$Program.apply(JsChecker.java:354)
	at io.bazel.rules.closure.worker.LegacyAspect.run(LegacyAspect.java:38)
	at io.bazel.rules.closure.ClosureWorker.run(ClosureWorker.java:69)
	at io.bazel.rules.closure.worker.PersistentWorker.runProgram(PersistentWorker.java:109)
	at io.bazel.rules.closure.worker.PersistentWorker.run(PersistentWorker.java:88)
	at io.bazel.rules.closure.ClosureWorker.main(ClosureWorker.java:111)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
	at com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:60)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.getEndOfArgCommentZones(IRFactory.java:1564)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processFormalParameterList(IRFactory.java:1712)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:3388)
	at com.google.javascript.jscomp.parsing.IRFactory.transform(IRFactory.java:833)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processFunction(IRFactory.java:1666)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:3313)
	at com.google.javascript.jscomp.parsing.IRFactory.transform(IRFactory.java:833)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processClassDeclaration(IRFactory.java:2671)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:3391)
	at com.google.javascript.jscomp.parsing.IRFactory.transform(IRFactory.java:833)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processAstRoot(IRFactory.java:1303)
	at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:3351)
	at com.google.javascript.jscomp.parsing.IRFactory.transformTree(IRFactory.java:344)
	at com.google.javascript.jscomp.parsing.ParserRunner.parse(ParserRunner.java:144)
	... 18 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions