-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
add completions for specific MatchType cases #14639
Conversation
@@ -362,6 +363,12 @@ object Completion { | |||
implicitConversionTargets(qual)(using ctx.fresh.setExploreTyperState()).flatMap(accessibleMembers) | |||
membersFromConversion.toSeq.groupByName | |||
|
|||
/** Completions for derived members of `MatchType`'s type. */ | |||
def matchTypeCompletions(qual: Tree)(using Context): CompletionMap = | |||
qual.tpe.widenDealias match |
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 think we should only dealias here but not widen
@@ -302,6 +302,7 @@ object Completion { | |||
def selectionCompletions(qual: Tree)(using Context): CompletionMap = | |||
implicitConversionMemberCompletions(qual) ++ | |||
extensionCompletions(qual) ++ | |||
matchTypeCompletions(qual) ++ |
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 think this shouldn't be a separate case but we should rather ensure that match types used as method receivers are properly reduced in all other cases. We should also add test cases for them. For some reason in case of extension methods surprisingly this seemed to work even without this PR but still we should add a test to avoid regressions. We should also make sure this works well with implicit conversions.
5df04b3
to
61822d2
Compare
.withSource.completion(m1, expected) | ||
} | ||
|
||
@Test def higherKindedMatchTypeLazyCompletion: Unit = { |
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.
What's the essential difference between this test case and higherKindedMatchTypeDeclaredCompletion
?
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.
higherKindedMatchTypeDeclaredCompletion is reduced and was working properly without this fix, added this one as a regression test.
Fixes scalameta/metals#2810