JVM_IR. Generate SMAP information for anonymous classes
#KT-28092 Fixed
This commit is contained in:
+7
-3
@@ -41,7 +41,8 @@ import java.io.File
|
||||
open class ClassCodegen protected constructor(
|
||||
internal val irClass: IrClass,
|
||||
val context: JvmBackendContext,
|
||||
private val parentClassCodegen: ClassCodegen? = null
|
||||
private val parentClassCodegen: ClassCodegen? = null,
|
||||
private val withinInline: Boolean = false
|
||||
) : InnerClassConsumer {
|
||||
private val innerClasses = mutableListOf<IrClass>()
|
||||
|
||||
@@ -74,6 +75,9 @@ open class ClassCodegen protected constructor(
|
||||
}
|
||||
|
||||
fun generate(): ReifiedTypeParametersUsages {
|
||||
if (withinInline) {
|
||||
getOrCreateSourceMapper() //initialize default mapping that would be later written in class file
|
||||
}
|
||||
val superClassInfo = irClass.getSuperClassInfo(typeMapper)
|
||||
val signature = getSignature(irClass, type, superClassInfo, typeMapper)
|
||||
|
||||
@@ -232,8 +236,8 @@ open class ClassCodegen protected constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun generateLocalClass(klass: IrClass): ReifiedTypeParametersUsages {
|
||||
return ClassCodegen(klass, context, this).generate()
|
||||
fun generateLocalClass(klass: IrClass, withinInline: Boolean): ReifiedTypeParametersUsages {
|
||||
return ClassCodegen(klass, context, this, withinInline = withinInline || this.withinInline).generate()
|
||||
}
|
||||
|
||||
private fun generateField(field: IrField) {
|
||||
|
||||
+1
-2
@@ -576,9 +576,8 @@ class ExpressionCodegen(
|
||||
"is not implemented, or it should have been lowered: ${element.render()}"
|
||||
)
|
||||
|
||||
// TODO maybe remove?
|
||||
override fun visitClass(declaration: IrClass, data: BlockInfo): PromisedValue {
|
||||
classCodegen.generateLocalClass(declaration).also {
|
||||
classCodegen.generateLocalClass(declaration, irFunction.isInline).also {
|
||||
closureReifiedMarkers[declaration] = it
|
||||
}
|
||||
return immaterialUnitValue
|
||||
|
||||
Reference in New Issue
Block a user