find-references on methods finds references to all overridden methods #1526
+185
−48
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:
fixes #1525
If I rename a method, I want to rename all children as well. Similarly, references to base.method() should find child.method(). But I don't think references to child.method() should find child2.method().
This diff, a precursor to "go to implementations", makes find-references find all overrides and references to overrides as well.
I do this by adding a new index from method -> base class that implements that method. That way, when searching tdeps of a class, we can find all implementations.
Bug: if our tdeps include a method not in our children, we will find these references. I imagine storing the full MRO in the index would be too large and calculating this on the fly would take too long (I think we throw this out after getting answers?).
Differential Revision: D85617964