[FIR2IR] Use companion as bound receiver if expected type requires it

A::foo is preferably resolved as an unbound reference to A.foo, however
if A.Companion is a subtype of A and the expected type has one fewer
parameter than the type of the unbound reference, generate a bound
reference with the companion as receiver.

^KT-56519 Fixed
This commit is contained in:
Kirill Rakhman
2023-02-28 15:55:04 +01:00
committed by Space Team
parent fc96eb6d8d
commit 1f0e6321b0
15 changed files with 158 additions and 5 deletions
@@ -3086,6 +3086,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/callableReference/bound/companionObjectReceiver.kt");
}
@TestMetadata("companionObjectReceiverInheritsFromOuter.kt")
public void testCompanionObjectReceiverInheritsFromOuter() throws Exception {
runTest("compiler/testData/codegen/box/callableReference/bound/companionObjectReceiverInheritsFromOuter.kt");
}
@TestMetadata("dontShareReceiver.kt")
public void testDontShareReceiver() throws Exception {
runTest("compiler/testData/codegen/box/callableReference/bound/dontShareReceiver.kt");