Problem
-------
The following comment combinations are not parsed:
1. ```
// /*
// *
// */
```
2. ```
/* // */
```
Solution
-------
- set higher lexing priority for `$._comment_text` token
- include "//" as an alternative to the contents of `$.block_comment`
Problem
-------
```scala
{ x =>
if (a) b.c }
```
is not parsed because OUTDENT token is not emitted in a presense of
space characters before the closing bracket
Solution
-------
Reorder space-handling and outdent-ing logic in external scanner
Problem
-------
Structural types in declarations are not parsed:
```
val x: F { val y: Int }
```
Solution
-------
Remove -1 precedence for `$._structural_type` branch of `$.compount_type`, resolve conflict with `$._type` explicitly
Extra changes
-------
Removed some unused conflict resolutions
Problem
-------
Parameter lists spreading multiple lines are not handled:
```
class A
():
def b
(): Int = 1
```
Solution
-------
Match `$._automatic_semicolon` in `$._function_constructor` and
`$.class_parameters`
Side-change: reuse `$._function_declaration` in `$.function_definition`
Problem
-------
Definitions like the following are not supported:
```scala
val a,b,c: Int = 1
var d,e = ""
```
Solution
-------
Add `$.identifiers` as a choice option along with `$._pattern` to
`$.var_definition`.
Remove `prec(-1)` in `$.identifiers` definitions so that parser wouldn't
on declarations with more than two identifiers.
Resolve a conflict between `$.identifiers` and `$.val_declaration`
Summary
-------
`$.lambda_expression` body was changed from `$._block` to
`$._indentable_expression`. This had the following effects:
* x10 faster parser generation
* parser size reduced from 41M to 24M
* conflict with `$.self_type`, which was resolved by matching
indent-tokens in `$.template_body`. This change, in its turn required
scanner.c to stop emitting INDENT and OUTDENT tokens when encountering
comments
Problem
-------
There's C code fidelity check in the CI process, but over time it seems
to have broken.
`needs.changedfiles.outputs.c` gets triggered for either `src/scanner.c`
or the generated `src/parser.c`, then the fidelity check logic
expects that `git diff` will be empty.
This actually won't work if you changed both `src/parser.c` and `grammar.js`
at the same time.
Solution
--------
The fix is to make a new `changedfiles.outputs.gen`. Now the new
behavior is:
1. If any C code were changed (including `src/parser.c`), run full tests
on all 3 Oses.
2. If non-`src/parser.c` C code were changed, run fidelity check on
Linux.