Tapioca does not properly attribute prepended methods

Open
#2,072 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
30/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
ruby
Domain
tooling

Research direction

The issue names no files or tests. Start by reproducing the foo/bar prepend example in Tapioca and trace how gem RBI ownership is attributed during RBI generation. Done means the prepended foo method is attributed only to bar's gem RBI, while foo's original method remains in foo's RBI.

Written by the indexing model from the issue text.

Description

bug help-wanted

I haven't verified this yet, but @paracycle told me that if one gem defines a method, and another gem overrides that method via a prepend, the prepended method will be incorrectly written to both gem RBIs.

Example:

# in gem foo
class Foo
  def foo; end
end
# in gem bar
module Bar
  def foo; end
end

Foo.prepend(Bar)

Tapioca will write bar's foo method to foo's gem RBIs, which is fine if they have the same signature, but not great if the prepend changes the method signature.

Dominant language
Ruby
Stars
873
Forks
164
Avg merge
4d 27m
Merged PRs (30d)
9

Contributor guide

No contributing guide indexed for this repository

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.

More from Shopify/tapioca

All issues in Shopify/tapioca

Similar issues

More Ruby issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.