-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[IDE] Inspect all equivalent type variables to replace a type variable by an archetype #63849
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't quite understand what is going on here... Could you please elaborate on what you are trying to archive?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The motivation is what we are already doing above: If we have a placeholder whose originator is a type variable that represents a generic parameter, we want to replace that placeholder by the generic parameter before printing code completion results because for example in the test case I modified
MyStruct<T>
looks more useful thanMyStruct<_>
.But, again in the test case below, we are receiving the following solution
And the argument we want to look up has type
T8
. NowT8
doesn’t represent a generic parameter and thus we were outputting_
for the placeholder in the results. But actually looking at the solution, you can see thatT8
has the same type asT0
(becauseT0
is bound toT8
) andT0
represents a generic parameter. Thus, for printing purposes we can replace the placeholder forT8
by the generic parameter thatT0
represents, which isT
.Does this make sense?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe this transformation should happen in
ConstraintSystem::finalize
while we are forming a complete solution in code completion mode instead?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed offline, I’ll do this in a follow up PR and filed rdar://106082607 so we don’t forget about it.