Skip to content
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

Merged
merged 4 commits into from Mar 16, 2022

Conversation

rochala
Copy link
Contributor

@rochala rochala commented Mar 8, 2022

@rochala rochala marked this pull request as ready for review March 8, 2022 10:18
@prolativ prolativ self-requested a review March 8, 2022 16:56
@@ -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
Copy link
Contributor

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) ++
Copy link
Contributor

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.

.withSource.completion(m1, expected)
}

@Test def higherKindedMatchTypeLazyCompletion: Unit = {
Copy link
Contributor

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?

Copy link
Contributor Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Completions, higher-kinded types and match types
2 participants