tree-sitter-elixir/test/corpus
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
..
expression parse nullary range operator (#25) 2022-02-13 13:19:53 -06:00
integration Cleanup and documentation 2021-09-28 16:03:43 +02:00
term Ignore heredoc end delimiter unless in a new line (#28) 2022-03-04 16:33:24 +01:00
comment.txt Cleanup and documentation 2021-09-28 16:03:43 +02:00
do_end.txt handle stab clauses without right-hand-sides 2022-04-11 19:23:22 -05:00
edge_syntax.txt Cleanup and documentation 2021-09-28 16:03:43 +02:00
semicolon.txt Add parser tests 2021-09-01 16:59:04 +02:00
unicode.txt Cleanup and documentation 2021-09-28 16:03:43 +02:00
variable.txt Use the same AST node for all identifiers 2021-09-29 12:44:04 +02:00