diff --git a/idea/idea-completion/testData/basic/common/extensions/ParametrizedExpectedType.kt b/idea/idea-completion/testData/basic/common/extensions/ParametrizedExpectedType.kt new file mode 100644 index 00000000000..161971cffd1 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/extensions/ParametrizedExpectedType.kt @@ -0,0 +1,11 @@ +// FIR_COMPARISON +class Generic + +fun Generic.extension(arg: (A) -> B): B = TODO() + +fun test() { + val v = Generic() + v.ext +} + +// EXIST: extension diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java index 22269f0a6b0..7489de821c2 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java @@ -1433,6 +1433,11 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes runTest("idea/idea-completion/testData/basic/common/extensions/NoMemberExtensionsFromCompanionObject.kt"); } + @TestMetadata("ParametrizedExpectedType.kt") + public void testParametrizedExpectedType() throws Exception { + runTest("idea/idea-completion/testData/basic/common/extensions/ParametrizedExpectedType.kt"); + } + @TestMetadata("StarTypeArg.kt") public void testStarTypeArg() throws Exception { runTest("idea/idea-completion/testData/basic/common/extensions/StarTypeArg.kt"); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index 9af0da044a0..0650bc59a81 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -1433,6 +1433,11 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT runTest("idea/idea-completion/testData/basic/common/extensions/NoMemberExtensionsFromCompanionObject.kt"); } + @TestMetadata("ParametrizedExpectedType.kt") + public void testParametrizedExpectedType() throws Exception { + runTest("idea/idea-completion/testData/basic/common/extensions/ParametrizedExpectedType.kt"); + } + @TestMetadata("StarTypeArg.kt") public void testStarTypeArg() throws Exception { runTest("idea/idea-completion/testData/basic/common/extensions/StarTypeArg.kt"); diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/completion/HighLevelJvmBasicCompletionTestGenerated.java b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/completion/HighLevelJvmBasicCompletionTestGenerated.java index 4f40129b48b..266a53a6f01 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/completion/HighLevelJvmBasicCompletionTestGenerated.java +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/completion/HighLevelJvmBasicCompletionTestGenerated.java @@ -1433,6 +1433,11 @@ public class HighLevelJvmBasicCompletionTestGenerated extends AbstractHighLevelJ runTest("idea/idea-completion/testData/basic/common/extensions/NoMemberExtensionsFromCompanionObject.kt"); } + @TestMetadata("ParametrizedExpectedType.kt") + public void testParametrizedExpectedType() throws Exception { + runTest("idea/idea-completion/testData/basic/common/extensions/ParametrizedExpectedType.kt"); + } + @TestMetadata("StarTypeArg.kt") public void testStarTypeArg() throws Exception { runTest("idea/idea-completion/testData/basic/common/extensions/StarTypeArg.kt"); diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/resolver/SingleCandidateResolver.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/resolver/SingleCandidateResolver.kt index 3da86b3e175..34ffd5dab69 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/resolver/SingleCandidateResolver.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/resolver/SingleCandidateResolver.kt @@ -90,7 +90,8 @@ class SingleCandidateResolver( candidate = candidate ) } - val completionResult = firCallCompleter.completeCall(fakeCall, resolutionParameters.expectedType) + val expectedType = resolutionParameters.expectedType ?: bodyResolveComponents.noExpectedType + val completionResult = firCallCompleter.completeCall(fakeCall, expectedType) return if (completionResult.callCompleted) { completionResult.result } else null