Devirtualization fails to eliminate boxing in function reference context

^KT-49847 Fixed

Merge-request: KT-MR-6460
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2022-07-12 08:26:27 +00:00
committed by Space
parent 5013988dbb
commit fd52f475cb
19 changed files with 289 additions and 8 deletions
@@ -41912,6 +41912,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt");
}
@Test
@TestMetadata("genericFunctionReferenceSignature.kt")
public void testGenericFunctionReferenceSignature() throws Exception {
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericFunctionReferenceSignature.kt");
}
@Test
@TestMetadata("genericMethodSignature.kt")
public void testGenericMethodSignature() throws Exception {
@@ -0,0 +1,12 @@
// WITH_REFLECT
package test
fun <T> foo(x: T) = x
fun box(): String {
val bar: kotlin.reflect.KFunction1<Int, Int> = ::foo
val returnType = bar.returnType
if (returnType.toString() != "T") return returnType.toString()
return "OK"
}
@@ -41306,6 +41306,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt");
}
@Test
@TestMetadata("genericFunctionReferenceSignature.kt")
public void testGenericFunctionReferenceSignature() throws Exception {
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericFunctionReferenceSignature.kt");
}
@Test
@TestMetadata("genericMethodSignature.kt")
public void testGenericMethodSignature() throws Exception {
@@ -41912,6 +41912,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt");
}
@Test
@TestMetadata("genericFunctionReferenceSignature.kt")
public void testGenericFunctionReferenceSignature() throws Exception {
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericFunctionReferenceSignature.kt");
}
@Test
@TestMetadata("genericMethodSignature.kt")
public void testGenericMethodSignature() throws Exception {
@@ -33159,6 +33159,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt");
}
@TestMetadata("genericFunctionReferenceSignature.kt")
public void testGenericFunctionReferenceSignature() throws Exception {
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericFunctionReferenceSignature.kt");
}
@TestMetadata("genericMethodSignature.kt")
public void testGenericMethodSignature() throws Exception {
runTest("compiler/testData/codegen/box/reflection/genericSignature/genericMethodSignature.kt");