Skip to content

Migrate type inferrer to use Rubydex#4014

Open
vinistock wants to merge 1 commit into03-05-switch_singleton_class_names_to_new_stylefrom
03-18-migrate_type_inferrer
Open

Migrate type inferrer to use Rubydex#4014
vinistock wants to merge 1 commit into03-05-switch_singleton_class_names_to_new_stylefrom
03-18-migrate_type_inferrer

Conversation

@vinistock
Copy link
Member

Motivation

We need the type inferrer to operate on the Rubydex graph instead of the old index. Otherwise, we can't migrate requests properly.

Implementation

Changed the inferrer to accept a graph and made all of the changes to maintain the existing behaviour.

Automated Tests

I had to skip a hover test while our RBS indexer doesn't handle methods. I'll use [RUBYDEX] in all skips so that we can easily find them later.

@vinistock vinistock self-assigned this Mar 18, 2026
@vinistock vinistock requested a review from a team as a code owner March 18, 2026 15:21
@vinistock vinistock added server This pull request should be included in the server gem's release notes other Changes that aren't bugfixes, enhancements or breaking changes labels Mar 18, 2026
@vinistock vinistock force-pushed the 03-05-switch_singleton_class_names_to_new_style branch from e50b099 to abf5c41 Compare March 18, 2026 17:16
@vinistock vinistock force-pushed the 03-18-migrate_type_inferrer branch from 5b864a5 to cd9f1e7 Compare March 18, 2026 17:16
Comment on lines -124 to +127
entries = @index.resolve(guessed_name, nesting) || @index.first_unqualified_const(guessed_name)
name = entries&.first&.name
return unless name
declaration = @graph.resolve_constant(guessed_name, nesting)
declaration ||= @graph.search(guessed_name).first
return unless declaration
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I notice different semantics in the APIs here. I am not very familiar with this part of the code, but I am assuming the intent is to have a best effort guess at what the type is as at this point we were not able to resolve it.

The question I have is, will @index.first_unqualified_const(guessed_name) and @graph.search(guessed_name).first return the same result, or is the heuristic different?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

other Changes that aren't bugfixes, enhancements or breaking changes server This pull request should be included in the server gem's release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants