JVM_IR: write correct lambda invoke() signature in metadata
This commit is contained in:
+7
-2
@@ -183,8 +183,13 @@ class FirMetadataSerializer(
|
||||
serializer!!.packagePartProto(irClass.getPackageFragment()!!.fqName, metadata.fir).apply {
|
||||
serializerExtension.serializeJvmPackage(this)
|
||||
}.build()
|
||||
is FirMetadataSource.Function ->
|
||||
serializer!!.functionProto(metadata.fir.copyToFreeAnonymousFunction())?.build()
|
||||
is FirMetadataSource.Function -> {
|
||||
val withTypeParameters = metadata.fir.copyToFreeAnonymousFunction()
|
||||
serializationBindings.get(FirJvmSerializerExtension.METHOD_FOR_FIR_FUNCTION, metadata.fir)?.let {
|
||||
serializationBindings.put(FirJvmSerializerExtension.METHOD_FOR_FIR_FUNCTION, withTypeParameters, it)
|
||||
}
|
||||
serializer!!.functionProto(withTypeParameters)?.build()
|
||||
}
|
||||
else -> null
|
||||
} ?: return null
|
||||
return message to serializer!!.stringTable as JvmStringTable
|
||||
|
||||
+7
-2
@@ -65,8 +65,13 @@ class DescriptorMetadataSerializer(
|
||||
serializer!!.packagePartProto(irClass.getPackageFragment()!!.fqName, metadata.descriptors).apply {
|
||||
serializerExtension.serializeJvmPackage(this, type)
|
||||
}.build()
|
||||
is DescriptorMetadataSource.Function ->
|
||||
serializer!!.functionProto(createFreeFakeLambdaDescriptor(metadata.descriptor, context.state.typeApproximator))?.build()
|
||||
is DescriptorMetadataSource.Function -> {
|
||||
val withTypeParameters = createFreeFakeLambdaDescriptor(metadata.descriptor, context.state.typeApproximator)
|
||||
serializationBindings.get(JvmSerializationBindings.METHOD_FOR_FUNCTION, metadata.descriptor)?.let {
|
||||
serializationBindings.put(JvmSerializationBindings.METHOD_FOR_FUNCTION, withTypeParameters, it)
|
||||
}
|
||||
serializer!!.functionProto(withTypeParameters)?.build()
|
||||
}
|
||||
else -> null
|
||||
} ?: return null
|
||||
return message to serializer!!.stringTable as JvmStringTable
|
||||
|
||||
+1
@@ -677,6 +677,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext)
|
||||
returnType = referenceReturnType
|
||||
isSuspend = callee.isSuspend
|
||||
}.apply {
|
||||
metadata = functionReferenceClass.metadata
|
||||
overriddenSymbols += superMethod.symbol
|
||||
dispatchReceiverParameter = buildReceiverParameter(
|
||||
this,
|
||||
|
||||
Reference in New Issue
Block a user