diff --git a/compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.kt b/compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.kt new file mode 100644 index 00000000000..d4d6911d526 --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.kt @@ -0,0 +1,16 @@ +class A + +class B { + val memberVal: A = A() + fun memberFun(): A = A() +} + +val B.extensionVal: A + get() = A() + +fun B.extensionFun(): A = A() + +fun test_1() { + val extensionValRef = B::extensionVal + val extensionFunRef = B::extensionFun +} diff --git a/compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.txt b/compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.txt new file mode 100644 index 00000000000..3482c040eaa --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.txt @@ -0,0 +1,31 @@ +FILE: extensionCallableReferences.kt + public final class A : R|kotlin/Any| { + public constructor(): R|A| { + super() + } + + } + public final class B : R|kotlin/Any| { + public constructor(): R|B| { + super() + } + + public final val memberVal: R|A| = R|/A.A|() + public get(): R|A| + + public final fun memberFun(): R|A| { + ^memberFun R|/A.A|() + } + + } + public final val R|B|.extensionVal: R|A| + public get(): R|A| { + ^ R|/A.A|() + } + public final fun R|B|.extensionFun(): R|A| { + ^extensionFun R|/A.A|() + } + public final fun test_1(): R|kotlin/Unit| { + lval extensionValRef: R|kotlin/reflect/KProperty1| = Q|B|::R|/extensionVal| + lval extensionFunRef: R|kotlin/reflect/KFunction1| = Q|B|::R|/extensionFun| + } diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java index c49bb1ec67c..f227a124522 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java @@ -1235,6 +1235,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { runTest("compiler/fir/resolve/testData/resolve/inference/definitelyNotNullIntersectionType.kt"); } + @TestMetadata("extensionCallableReferences.kt") + public void testExtensionCallableReferences() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.kt"); + } + @TestMetadata("lambdaAsReturnStatementOfLambda.kt") public void testLambdaAsReturnStatementOfLambda() throws Exception { runTest("compiler/fir/resolve/testData/resolve/inference/lambdaAsReturnStatementOfLambda.kt"); diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java index 8c2e187121a..857cb6f5813 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java @@ -1235,6 +1235,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/resolve/testData/resolve/inference/definitelyNotNullIntersectionType.kt"); } + @TestMetadata("extensionCallableReferences.kt") + public void testExtensionCallableReferences() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/inference/extensionCallableReferences.kt"); + } + @TestMetadata("lambdaAsReturnStatementOfLambda.kt") public void testLambdaAsReturnStatementOfLambda() throws Exception { runTest("compiler/fir/resolve/testData/resolve/inference/lambdaAsReturnStatementOfLambda.kt");