JVM_IR make proxy funs synthetic, fix some typos
This commit is contained in:
committed by
teamcityserver
parent
e0c2a2efd7
commit
b184c72e3d
+1
-1
@@ -338,7 +338,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext)
|
||||
modality = Modality.FINAL
|
||||
isSuspend = false
|
||||
isInline = false
|
||||
origin = JvmLoweredDeclarationOrigin.PROXY_FUN_FOR_INDY_SAM_CONVESION
|
||||
origin = JvmLoweredDeclarationOrigin.PROXY_FUN_FOR_INDY_SAM_CONVERSION
|
||||
}.also { proxyFun ->
|
||||
proxyFun.parent = currentDeclarationParent
|
||||
?: throw AssertionError("No declaration parent when processing $reference")
|
||||
|
||||
+1
-1
@@ -275,7 +275,7 @@ private class TypeOperatorLowering(private val context: JvmBackendContext) : Fil
|
||||
val dynamicCallArguments = ArrayList<IrExpression>()
|
||||
|
||||
val irDynamicCallTarget = context.irFactory.buildFun {
|
||||
origin = JvmLoweredDeclarationOrigin.INVOVEDYNAMIC_CALL_TARGET
|
||||
origin = JvmLoweredDeclarationOrigin.INVOKEDYNAMIC_CALL_TARGET
|
||||
name = samMethod.name
|
||||
returnType = erasedSamType
|
||||
}.apply {
|
||||
|
||||
+1
-1
@@ -382,7 +382,7 @@ internal class LambdaMetafactoryArgumentsBuilder(
|
||||
|
||||
private val adaptableFunctionOrigins = setOf(
|
||||
IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA,
|
||||
JvmLoweredDeclarationOrigin.PROXY_FUN_FOR_INDY_SAM_CONVESION
|
||||
JvmLoweredDeclarationOrigin.PROXY_FUN_FOR_INDY_SAM_CONVERSION
|
||||
)
|
||||
|
||||
private fun adaptLambdaSignature(
|
||||
|
||||
+2
-2
@@ -46,7 +46,7 @@ interface JvmLoweredDeclarationOrigin : IrDeclarationOrigin {
|
||||
object COMPANION_PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("COMPANION_PROPERTY_BACKING_FIELD")
|
||||
object FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE")
|
||||
object ABSTRACT_BRIDGE_STUB : IrDeclarationOriginImpl("ABSTRACT_BRIDGE_STUB")
|
||||
object INVOVEDYNAMIC_CALL_TARGET : IrDeclarationOriginImpl("INVOVEDYNAMIC_CALL_TARGET")
|
||||
object INVOKEDYNAMIC_CALL_TARGET : IrDeclarationOriginImpl("INVOKEDYNAMIC_CALL_TARGET")
|
||||
object INLINE_LAMBDA : IrDeclarationOriginImpl("INLINE_LAMBDA")
|
||||
object PROXY_FUN_FOR_INDY_SAM_CONVESION : IrDeclarationOriginImpl("PROXY_FUN_FOR_INDY_SAM_CONVESION")
|
||||
object PROXY_FUN_FOR_INDY_SAM_CONVERSION : IrDeclarationOriginImpl("PROXY_FUN_FOR_INDY_SAM_CONVERSION", isSynthetic = true)
|
||||
}
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ object JvmInvokeDynamic : IntrinsicMethod() {
|
||||
?: fail("'dynamicCall' is expected to be a call")
|
||||
val dynamicCallee = dynamicCall.symbol.owner
|
||||
if (dynamicCallee.parent != codegen.context.ir.symbols.kotlinJvmInternalInvokeDynamicPackage ||
|
||||
dynamicCallee.origin != JvmLoweredDeclarationOrigin.INVOVEDYNAMIC_CALL_TARGET
|
||||
dynamicCallee.origin != JvmLoweredDeclarationOrigin.INVOKEDYNAMIC_CALL_TARGET
|
||||
)
|
||||
fail("Unexpected dynamicCallee: '${dynamicCallee.render()}'")
|
||||
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// IGNORE_BACKEND: JVM
|
||||
|
||||
// FILE: indySamConversionViaProxyFun.kt.kt
|
||||
fun test() {
|
||||
use(Sam(String?::plus))
|
||||
use(Sam(String?::plus))
|
||||
use(Sam(String?::plus))
|
||||
}
|
||||
|
||||
fun use(s: Sam) {}
|
||||
|
||||
// FILE: Sam.java
|
||||
public interface Sam {
|
||||
String get(String x, Object y);
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
@kotlin.Metadata
|
||||
public final class IndySamConversionViaProxyFun_ktKt {
|
||||
// source: 'indySamConversionViaProxyFun.kt.kt'
|
||||
private synthetic final static method test$plus__proxy(p0: java.lang.String, p1: java.lang.Object): java.lang.String
|
||||
private synthetic final static method test$plus__proxy-0(p0: java.lang.String, p1: java.lang.Object): java.lang.String
|
||||
private synthetic final static method test$plus__proxy-1(p0: java.lang.String, p1: java.lang.Object): java.lang.String
|
||||
public final static method test(): void
|
||||
public final static method use(@org.jetbrains.annotations.NotNull p0: Sam): void
|
||||
}
|
||||
+6
@@ -2042,6 +2042,12 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/sam/genericSamInterface.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("indySamConversionViaProxyFun.kt")
|
||||
public void testIndySamConversionViaProxyFun() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/sam/indySamConversionViaProxyFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt16650.kt")
|
||||
public void testKt16650() throws Exception {
|
||||
|
||||
+6
@@ -2090,6 +2090,12 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
|
||||
runTest("compiler/testData/codegen/bytecodeListing/sam/genericSamInterface.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("indySamConversionViaProxyFun.kt")
|
||||
public void testIndySamConversionViaProxyFun() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/sam/indySamConversionViaProxyFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt16650.kt")
|
||||
public void testKt16650() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user