elixir-lang / tree-sitter-elixir

Elixir grammar for tree-sitter
https://elixir-lang.org/tree-sitter-elixir
Apache License 2.0
248 stars 25 forks source link

Update to tree-sitter 0.23 #70

Closed hendrikvanantwerpen closed 2 months ago

hendrikvanantwerpen commented 2 months ago

Tree-sitter released version 0.23 recently. This contains a breaking, but ultimately very good change to how parser bindings work (https://github.com/tree-sitter/tree-sitter/pull/3069). The TLDR of that change is that parsers do not depend on tree-sitter anymore, but instead on a shard (and supposedly very stable) tree-sitter-language crate. As a result, clients are free to chose their tree-sitter version as the parser ABI is supported. Library and parser versions are less tighly coupled, and it should no longer be necessary to move all the parsers to the next tree-sitter version in lock-step to be able to upgrade the library.

Most of the changes in this PR are from running tree-sitter generate. I'll add comments on other changes I did to explain why I thought they are necessary, or where I'm not sure I did it correctly.

hendrikvanantwerpen commented 2 months ago

Let me quickly run the binding tests locally to ensure I didn't mess those up. I'll report back within the hour on that.

hendrikvanantwerpen commented 2 months ago

Thanks for the review @jonatanklosko! I've removed the generated srcs as per your suggestion, and fixed some issues I found with the bindings. This should be good now.