tree-sitter-elixir/test/highlight
Michael Davis 662426cd85
handle stab clauses without right-hand-sides
Currently a stab clause without a right-hand-side is parsed as an error:

```elixir
Enum.map(xs, fn x ->
end)
```

And the `end` token ends up not being highlighted as a keyword. The
compiler gives a warning about this syntax but it comes up pretty
often when editing (writing a `case` block for example).

Implementation-wise, this might be a bug in tree-sitter? `prec.right`
seems to fight with error recovery when the rightmost token(s) are
`optional`.

```elixir
fn ->
end
```

gets parsed as

```scm
(anonymous_function
  (stab_clause
    right: (body (identifier)))
  (MISSING "end"))
```

although the `optional` should allow this case. I've seen this in
other grammars and it seems like the way around it is to replace
the `prec.right` with a conflict.
2022-04-11 19:23:22 -05:00
..
anonymous.ex handle stab clauses without right-hand-sides 2022-04-11 19:23:22 -05:00
calls.ex Rename module highlight token (#16) 2021-12-15 23:29:48 +01:00
data_structures.ex Rename module highlight token (#16) 2021-12-15 23:29:48 +01:00
identifiers.ex Rename module highlight token (#16) 2021-12-15 23:29:48 +01:00
kernel.ex Rename module highlight token (#16) 2021-12-15 23:29:48 +01:00
literals.ex Add highlighting tests 2021-09-29 19:44:04 +02:00
module.ex Rename module highlight token (#16) 2021-12-15 23:29:48 +01:00
operators.ex parse nullary range operator (#25) 2022-02-13 13:19:53 -06:00