[JVM_IR] Add String.plus(Any) to intrinsics list.
This filters it out for use in SAM wrapper generation with invoke-dynamic. The intrinsic is not actually used for code generation so it is added to the list of intrinsics that should have been lowered away before codegen. ^KT-45779 Fixed
This commit is contained in:
committed by
teamcityserver
parent
c1021623e8
commit
0b5ec5535c
+6
@@ -21241,6 +21241,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt45779.kt")
|
||||||
|
public void testKt45779() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/kt45779.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("nullabilityAssertions.kt")
|
@TestMetadata("nullabilityAssertions.kt")
|
||||||
public void testNullabilityAssertions() throws Exception {
|
public void testNullabilityAssertions() throws Exception {
|
||||||
|
|||||||
+2
-4
@@ -19,10 +19,7 @@ package org.jetbrains.kotlin.backend.jvm.intrinsics
|
|||||||
import org.jetbrains.kotlin.backend.jvm.JvmSymbols
|
import org.jetbrains.kotlin.backend.jvm.JvmSymbols
|
||||||
import org.jetbrains.kotlin.builtins.PrimitiveType
|
import org.jetbrains.kotlin.builtins.PrimitiveType
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
import org.jetbrains.kotlin.builtins.StandardNames
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
||||||
@@ -134,6 +131,7 @@ class IrIntrinsicMethods(val irBuiltIns: IrBuiltIns, val symbols: JvmSymbols) {
|
|||||||
} + listOf(
|
} + listOf(
|
||||||
Key(kotlinFqn, anyFqn, "toString", emptyList()),
|
Key(kotlinFqn, anyFqn, "toString", emptyList()),
|
||||||
Key(kotlinFqn, null, "arrayOf", listOf(arrayFqn)),
|
Key(kotlinFqn, null, "arrayOf", listOf(arrayFqn)),
|
||||||
|
Key(stringFqn, null, "plus", listOf(anyFqn)),
|
||||||
)).map { it to IntrinsicShouldHaveBeenLowered }
|
)).map { it to IntrinsicShouldHaveBeenLowered }
|
||||||
|
|
||||||
private val PrimitiveType.symbol
|
private val PrimitiveType.symbol
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// JVM_TARGET: 1.8
|
||||||
|
// SAM_CONVERSIONS: INDY
|
||||||
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
// CHECK_BYTECODE_TEXT
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 0 java/lang/invoke/LambdaMetafactory
|
||||||
|
|
||||||
|
// FILE: BiFunction.java
|
||||||
|
|
||||||
|
public interface BiFunction<T1, T2, R> {
|
||||||
|
R apply(T1 t1, T2 t2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: Operators.java
|
||||||
|
|
||||||
|
public class Operators {
|
||||||
|
public static <T1, T2, R> R combine(T1 a, T2 b, BiFunction<T1, T2, R> combiner) {
|
||||||
|
return combiner.apply(a, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
|
fun box() = Operators.combine("O", "K", String::plus)
|
||||||
+6
@@ -21211,6 +21211,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt45779.kt")
|
||||||
|
public void testKt45779() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/kt45779.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("nullabilityAssertions.kt")
|
@TestMetadata("nullabilityAssertions.kt")
|
||||||
public void testNullabilityAssertions() throws Exception {
|
public void testNullabilityAssertions() throws Exception {
|
||||||
|
|||||||
+6
@@ -21241,6 +21241,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt45779.kt")
|
||||||
|
public void testKt45779() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/kt45779.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("nullabilityAssertions.kt")
|
@TestMetadata("nullabilityAssertions.kt")
|
||||||
public void testNullabilityAssertions() throws Exception {
|
public void testNullabilityAssertions() throws Exception {
|
||||||
|
|||||||
+5
@@ -17726,6 +17726,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/intReturnTypeAsNumber.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt45779.kt")
|
||||||
|
public void testKt45779() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/kt45779.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("nullabilityAssertions.kt")
|
@TestMetadata("nullabilityAssertions.kt")
|
||||||
public void testNullabilityAssertions() throws Exception {
|
public void testNullabilityAssertions() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/invokedynamic/sam/nullabilityAssertions.kt");
|
runTest("compiler/testData/codegen/box/invokedynamic/sam/nullabilityAssertions.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user