bazelbuild / bazelbuild/rules_closure

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

Open
#496 8 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
159
Forks
111
PR merge metrics
No merged PRs in 30d

Description

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`:

```py
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](https://github.com/developit/preact-todomvc), but I'm running into various compiler errors.

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

```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
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.