diff --git a/idea/idea-frontend-fir/testData/analysisSession/resolveCall/resolveCallInSuperConstructorParam.kt b/idea/idea-frontend-fir/testData/analysisSession/resolveCall/resolveCallInSuperConstructorParam.kt new file mode 100644 index 00000000000..94d057876c3 --- /dev/null +++ b/idea/idea-frontend-fir/testData/analysisSession/resolveCall/resolveCallInSuperConstructorParam.kt @@ -0,0 +1,7 @@ +infix fun A.to(other: B) = this + +open class A(x: T) + +class B : A(1 to 2) + +// CALL: KtFunctionCall: targetFunction = to(: A, other: B): A \ No newline at end of file diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/AbstractResolveCallTest.kt b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/AbstractResolveCallTest.kt index 3bfc101f4de..1e85eb52927 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/AbstractResolveCallTest.kt +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/AbstractResolveCallTest.kt @@ -11,6 +11,7 @@ import com.intellij.psi.PsiElement import com.intellij.testFramework.LightCodeInsightTestCase import org.jetbrains.kotlin.idea.addExternalTestFiles import org.jetbrains.kotlin.idea.executeOnPooledThreadInReadAction +import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.analyze import org.jetbrains.kotlin.idea.frontend.api.calls.KtCall import org.jetbrains.kotlin.idea.frontend.api.calls.KtErrorCallTarget @@ -22,6 +23,7 @@ import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.psi.KtBinaryExpression import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtValueArgument import org.jetbrains.kotlin.psi.psiUtil.elementsInRange import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.util.KtTestUtil @@ -44,13 +46,7 @@ abstract class AbstractResolveCallTest : @Suppress("DEPRECATION") LightCodeInsig val actualText = executeOnPooledThreadInReadAction { val callInfos = analyze(file as KtFile) { - elements.map { element -> - when (element) { - is KtCallExpression -> element.resolveCall() - is KtBinaryExpression -> element.resolveCall() - else -> error("Selected should be either KtCallExpression or KtBinaryExpression but was $element") - } - } + elements.map { resolveCall(it) } } if (callInfos.isEmpty()) { @@ -72,6 +68,13 @@ abstract class AbstractResolveCallTest : @Suppress("DEPRECATION") LightCodeInsig KotlinTestUtils.assertEqualsToFile(File(path), actualText) } + private fun KtAnalysisSession.resolveCall(element: PsiElement): KtCall? = when (element) { + is KtCallExpression -> element.resolveCall() + is KtBinaryExpression -> element.resolveCall() + is KtValueArgument -> resolveCall(element.getArgumentExpression()!!) + else -> error("Selected should be either KtCallExpression or KtBinaryExpression but was $element") + } + private fun getSingleSelectedElement(selection: CaretState): PsiElement { val selectionRange = selection.getTextRange() diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/ResolveCallTestGenerated.java b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/ResolveCallTestGenerated.java index ff4c42df83a..d69b9ad2ebb 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/ResolveCallTestGenerated.java +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/fir/ResolveCallTestGenerated.java @@ -59,6 +59,11 @@ public class ResolveCallTestGenerated extends AbstractResolveCallTest { runTest("idea/idea-frontend-fir/testData/analysisSession/resolveCall/javaFunctionCall.kt"); } + @TestMetadata("resolveCallInSuperConstructorParam.kt") + public void testResolveCallInSuperConstructorParam() throws Exception { + runTest("idea/idea-frontend-fir/testData/analysisSession/resolveCall/resolveCallInSuperConstructorParam.kt"); + } + @TestMetadata("simpleCallWithNonMatchingArgs.kt") public void testSimpleCallWithNonMatchingArgs() throws Exception { runTest("idea/idea-frontend-fir/testData/analysisSession/resolveCall/simpleCallWithNonMatchingArgs.kt");