[IR] Update parents when transforming declaration containers
This commit is contained in:
+2
-1
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.transformDeclarationsFlat
|
||||
import org.jetbrains.kotlin.ir.util.transformFlat
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
@@ -26,7 +27,7 @@ class BlockDecomposerLowering(context: JsIrBackendContext) : DeclarationContaine
|
||||
private val nothingType = context.irBuiltIns.nothingType
|
||||
|
||||
override fun lower(irDeclarationContainer: IrDeclarationContainer) {
|
||||
irDeclarationContainer.declarations.transformFlat { declaration ->
|
||||
irDeclarationContainer.transformDeclarationsFlat { declaration ->
|
||||
when (declaration) {
|
||||
is IrFunction -> {
|
||||
lower(declaration)
|
||||
|
||||
+4
-3
@@ -81,15 +81,16 @@ class EnumUsageLowering(val context: JsIrBackendContext) : FileLoweringPass {
|
||||
|
||||
class EnumClassLowering(val context: JsIrBackendContext) : DeclarationContainerLoweringPass {
|
||||
override fun lower(irDeclarationContainer: IrDeclarationContainer) {
|
||||
irDeclarationContainer.declarations.transformFlat { declaration ->
|
||||
irDeclarationContainer.transformDeclarationsFlat { declaration ->
|
||||
if (declaration is IrClass && declaration.isEnumClass) {
|
||||
if (declaration.descriptor.isExpect) {
|
||||
emptyList()
|
||||
} else {
|
||||
EnumClassTransformer(context, declaration).transform()
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
listOf(declaration)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -291,7 +292,7 @@ class EnumClassTransformer(val context: JsIrBackendContext, private val irClass:
|
||||
}
|
||||
|
||||
private fun replaceIrEntriesWithCorrespondingClasses() {
|
||||
irClass.declarations.transformFlat {
|
||||
irClass.transformDeclarationsFlat {
|
||||
listOfNotNull(if (it is IrEnumEntry) it.correspondingClass else it)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||
import org.jetbrains.kotlin.ir.util.defaultType
|
||||
import org.jetbrains.kotlin.ir.util.transformFlat
|
||||
import org.jetbrains.kotlin.ir.util.transformDeclarationsFlat
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
@@ -54,7 +54,7 @@ class SecondaryCtorLowering(val context: JsIrBackendContext) {
|
||||
}
|
||||
|
||||
private fun updateConstructorDeclarations(irClass: IrClass) {
|
||||
irClass.declarations.transformFlat {
|
||||
irClass.transformDeclarationsFlat {
|
||||
if (it is IrConstructor) {
|
||||
oldCtorToNewMap[it.symbol]?.let { (newInit, newCreate) ->
|
||||
listOf(newInit.owner, newCreate.owner)
|
||||
|
||||
+3
-2
@@ -58,7 +58,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
|
||||
}
|
||||
|
||||
private fun buildCoroutines(irFile: IrFile) {
|
||||
irFile.declarations.transformFlat(::tryTransformSuspendFunction)
|
||||
irFile.transformDeclarationsFlat(::tryTransformSuspendFunction)
|
||||
irFile.acceptVoid(object : IrElementVisitorVoid {
|
||||
override fun visitElement(element: IrElement) {
|
||||
element.acceptChildrenVoid(this)
|
||||
@@ -66,7 +66,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
|
||||
|
||||
override fun visitClass(declaration: IrClass) {
|
||||
declaration.acceptChildrenVoid(this)
|
||||
declaration.declarations.transformFlat(::tryTransformSuspendFunction)
|
||||
declaration.transformDeclarationsFlat(::tryTransformSuspendFunction)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -343,6 +343,7 @@ internal class SuspendFunctionsLowering(val context: JsIrBackendContext): FileLo
|
||||
coroutineClassThis =
|
||||
JsIrBuilder.buildValueParameter(Name.special("<this>"), -1, thisType, IrDeclarationOrigin.INSTANCE_RECEIVER)
|
||||
coroutineClass.thisReceiver = coroutineClassThis
|
||||
coroutineClassThis.parent = coroutineClass
|
||||
|
||||
val overriddenMap = mutableMapOf<IrSimpleFunction, IrSimpleFunctionSymbol>()
|
||||
val constructors = mutableSetOf<IrConstructor>()
|
||||
|
||||
+2
-2
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.ir.backend.js.lower.inline
|
||||
import org.jetbrains.kotlin.backend.common.DeclarationContainerLoweringPass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationContainer
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.util.transformFlat
|
||||
import org.jetbrains.kotlin.ir.util.transformDeclarationsFlat
|
||||
|
||||
|
||||
object RemoveInlineFunctionsWithReifiedTypeParametersLowering: DeclarationContainerLoweringPass {
|
||||
override fun lower(irDeclarationContainer: IrDeclarationContainer) {
|
||||
irDeclarationContainer.declarations.transformFlat {
|
||||
irDeclarationContainer.transformDeclarationsFlat {
|
||||
if (it is IrFunction && it.isInline && it.typeParameters.any { it.isReified }) listOf() else null
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user