feat: Add support for RBS inline type annotations #279
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds support for recognizing RBS (Ruby Signature) inline type annotation comments in Ruby code. This enables better editor support for Ruby's type annotations by distinguishing them from regular comments in the AST.
Motivation
RBS is Ruby's official type signature language, and increasingly Ruby developers are using inline RBS comments to annotate their code with type information:
Currently, tree-sitter-ruby treats these as regular comments, making it impossible for editors to provide enhanced support for type annotations (different highlighting, hover information, etc.).
Implementation
This implementation takes a minimal approach - it recognizes RBS comment patterns without parsing the type syntax itself:
#:
comments are recognized asrbs_type_comment
tokens#|
comments (multi-line continuations) are recognized asrbs_continuation_comment
tokens#
comments remain unchangedWhy not parse the full RBS syntax?
Changes
rbs_type_comment
andrbs_continuation_comment
token rules@type.annotation
(vs@comment
for regular comments)Testing
All tests pass (301 total, including 11 new RBS tests):
Impact
Related Work