diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt index 8687eafe67c..8329c152ec4 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt @@ -698,10 +698,11 @@ class CallAndReferenceGenerator( ): IrExpression? { val classSymbol = (qualifier.typeRef.coneType as? ConeClassLikeType)?.lookupTag?.toSymbol(session) if (callableReferenceAccess != null && classSymbol is FirRegularClassSymbol) { - val classIdMatched = classSymbol.classId == qualifier.classId + val classId = qualifier.symbol?.fullyExpandedClass(session)?.classId + val classIdMatched = classSymbol.classId == classId if (!classIdMatched) { // Check whether we need get companion object as dispatch receiver - if (!classSymbol.fir.isCompanion || classSymbol.classId.outerClassId != qualifier.classId) { + if (!classSymbol.fir.isCompanion || classSymbol.classId.outerClassId != classId) { return null } val resolvedReference = callableReferenceAccess.calleeReference as FirResolvedNamedReference diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index dee7a88cfcc..b134ec127fc 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -3794,6 +3794,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/callableReference/bound/syntheticExtensionOnLHS.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 02606775f0b..c2206a4dd14 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -3794,6 +3794,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/callableReference/bound/syntheticExtensionOnLHS.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt b/compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt new file mode 100644 index 00000000000..2fa2083c02c --- /dev/null +++ b/compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt @@ -0,0 +1,7 @@ +object Thing { + fun something(thing: String) = thing +} + +typealias ThingAlias = Thing + +fun box() = "OK".run(ThingAlias::something) diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 20a636339c8..8b296e131c0 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -3650,6 +3650,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/callableReference/bound/syntheticExtensionOnLHS.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 3adc1aeb379..1525d4f811b 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -3794,6 +3794,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/callableReference/bound/syntheticExtensionOnLHS.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index dcd944f2a0f..597f9e3cc7d 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -3186,6 +3186,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/callableReference/bound/syntheticExtensionOnLHS.kt"); } + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index 83242fdfca5..7504964154d 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -2456,6 +2456,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index 8d9e89b6b6d..6c3b2bac7f2 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -2510,6 +2510,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index cac4243b79e..4a94051266c 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -2510,6 +2510,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index 002783b3035..7bb4ea76898 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -2510,6 +2510,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java index efbd163378a..61be684af91 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/K2NativeCodegenBoxTestGenerated.java @@ -2599,6 +2599,12 @@ public class K2NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTes runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 334f2669eab..caf60bfaf04 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -2568,6 +2568,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @Test + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @Nested @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java index df83b3f7d44..0a857d0c0fd 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java @@ -2226,6 +2226,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/callableReference/bound/smartCastForExtensionReceiver.kt"); } + @TestMetadata("typeAliasObjectBoundReference.kt") + public void testTypeAliasObjectBoundReference() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/bound/typeAliasObjectBoundReference.kt"); + } + @TestMetadata("compiler/testData/codegen/box/callableReference/bound/equals") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)