diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/AbstractResolveCallTest.kt b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/AbstractResolveCallTest.kt index 272b6a5ce94..da42d78f50b 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/AbstractResolveCallTest.kt +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/AbstractResolveCallTest.kt @@ -72,6 +72,7 @@ private fun KtCall.stringRepresentation(): String { append( when (this@stringValue) { is KtFunctionSymbol -> callableIdIfNonLocal ?: name + is KtSamConstructorSymbol -> callableIdIfNonLocal ?: name is KtConstructorSymbol -> "" is KtPropertyGetterSymbol -> callableIdIfNonLocal ?: "" is KtPropertySetterSymbol -> callableIdIfNonLocal ?: "" diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/ResolveCallTestGenerated.java b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/ResolveCallTestGenerated.java index c264c80bc15..33425ae7c2e 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/ResolveCallTestGenerated.java +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/ResolveCallTestGenerated.java @@ -372,6 +372,12 @@ public class ResolveCallTestGenerated extends AbstractResolveCallTest { runTest("analysis/analysis-api/testData/analysisSession/resolveCall/resolveCallInSuperConstructorParam.kt"); } + @Test + @TestMetadata("samConstructorCall.kt") + public void testSamConstructorCall() throws Exception { + runTest("analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.kt"); + } + @Test @TestMetadata("simpleCallWithNonMatchingArgs.kt") public void testSimpleCallWithNonMatchingArgs() throws Exception { diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.kt b/analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.kt new file mode 100644 index 00000000000..2985bd0c52a --- /dev/null +++ b/analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.kt @@ -0,0 +1 @@ +val c = Comparator {x: Int, y: Int -> 1} diff --git a/analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.txt b/analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.txt new file mode 100644 index 00000000000..fa2bca6abb8 --- /dev/null +++ b/analysis/analysis-api/testData/analysisSession/resolveCall/samConstructorCall.txt @@ -0,0 +1,4 @@ +KtFunctionCall: +argumentMapping = { {x: Int, y: Int -> 1} -> (block: kotlin.Function2, ft, kotlin.Int>) } +targetFunction = java/util/Comparator(block: kotlin.Function2, ft, kotlin.Int>): java.util.Comparator> +substitutor = }> \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/SamConstructor.kt b/analysis/analysis-api/testData/referenceResolve/SamConstructor.kt index 70b92d99401..d0dc5776457 100644 --- a/analysis/analysis-api/testData/referenceResolve/SamConstructor.kt +++ b/analysis/analysis-api/testData/referenceResolve/SamConstructor.kt @@ -1,2 +1,2 @@ -val c = java.util.Comparator {(x: Int, y: Int) -> 1} +val c = java.util.Comparator {x: Int, y: Int -> 1} diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt index be92a3406b2..54bbafc860e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt @@ -209,6 +209,7 @@ class FirSamResolverImpl( isCrossinline = false isNoinline = false isVararg = false + resolvePhase = FirResolvePhase.BODY_RESOLVE } resolvePhase = FirResolvePhase.BODY_RESOLVE