ruby / ruby/rbs

Inline support on protoype

Open
#2,653 4 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Ruby
Stars
2.2k
Forks
256
Avg merge
6d 17h
Merged PRs (30d)
37

Description

I was hoping to use inline documentation to generate proper type signatures, but it doesn't seem to be working at the moment. I have a PR with everything set up to demonstrate here.

Here is the gist, though:

I expect that this calculator.rb file:

class Calculator
  # @rbs (Integer, Integer) -> Integer
  def add(a, b)
    a + b
  end
end

And after running this command:

bin/rbs prototype rb lib/calculator.rb > sig/lib/calculator.rbs

Would produce this sig/lib/calculator.rbs file:

class Calculator
  def add: (Integer a, Integer b) -> Integer
end

But at the moment, it produces this:

class Calculator
  # @rbs (Integer, Integer) -> Integer
  def add: (untyped a, untyped b) -> untyped
end

All this with the current specs:

❯ ruby --version
ruby 3.2.7 (2025-02-04 revision 02ec315244) [arm64-darwin23]
❯ bundle info rbs
  * rbs (4.0.0.dev.4 8a97819)
	Summary: Type signature for Ruby.
	Homepage: https://github.com/ruby/rbs
	Source Code: https://github.com/ruby/rbs.git
	Changelog: https://github.com/ruby/rbs/blob/master/CHANGELOG.md
	Path: /Users/aemadrid/.local/share/mise/installs/ruby/3.2.7/lib/ruby/gems/3.2.0/bundler/gems/rbs-8a97819d4419

Is this something that is in the works but not quite ready?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The reproduction uses lib/calculator.rb and bin/rbs prototype rb, with output in sig/lib/calculator.rbs. Start by running that command and tracing the prototype path to see why the inline annotation remains a comment. Done means the generated signature uses Integer parameters and return type as shown.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.