JVM_IR: add offsets to JvmStatic and JvmOverloads proxies

KAPT3 needs them to correct error types in arguments.

 #KT-64639 Fixed
This commit is contained in:
Sonya Valchuk
2023-12-19 11:52:44 +00:00
committed by Space Cloud
parent d5aaa29a7f
commit 588549d1d0
10 changed files with 433 additions and 196 deletions
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
import org.jetbrains.kotlin.ir.builders.setSourceRange
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.impl.*
import org.jetbrains.kotlin.ir.types.defaultType
@@ -120,6 +121,7 @@ private class JvmOverloadsAnnotationLowering(val context: JvmBackendContext) : C
val res = when (oldFunction) {
is IrConstructor -> {
buildConstructor {
setSourceRange(oldFunction)
origin = JvmLoweredDeclarationOrigin.JVM_OVERLOADS_WRAPPER
name = oldFunction.name
visibility = oldFunction.visibility
@@ -128,6 +130,7 @@ private class JvmOverloadsAnnotationLowering(val context: JvmBackendContext) : C
}
}
is IrSimpleFunction -> buildFun {
setSourceRange(oldFunction)
origin = JvmLoweredDeclarationOrigin.JVM_OVERLOADS_WRAPPER
name = oldFunction.name
visibility = oldFunction.visibility
@@ -135,6 +135,7 @@ class JvmCachedDeclarations(
private fun IrClass.makeProxy(target: IrSimpleFunction, isStatic: Boolean) =
context.irFactory.buildFun {
setSourceRange(target)
returnType = target.returnType
origin = JvmLoweredDeclarationOrigin.JVM_STATIC_WRAPPER
// The proxy needs to have the same name as what it is targeting. If that is a property accessor,