Shopify / Shopify/tapioca

Tapioca does not properly attribute prepended methods

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

Nobody has claimed this yet.

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

Description

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.

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.

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.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.