IR: rename and move deepCopyWithVariables
Rename it to `deepCopyWithoutPatchingParents`, move to `org.jetbrains.kotlin.ir.util`, make it inline+reified, and extract the common implementation with `deepCopyWithSymbols` into `deepCopyImpl`.
This commit is contained in:
committed by
Space Team
parent
1d38c01afc
commit
d5c2aa4c0c
+2
-2
@@ -9,8 +9,8 @@ import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.deepCopyWithVariables
|
||||
import org.jetbrains.kotlin.ir.expressions.IrReturn
|
||||
import org.jetbrains.kotlin.ir.util.deepCopyWithoutPatchingParents
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -37,7 +37,7 @@ class BodyWithDefaultValueReplacer : IrElementVisitorVoid {
|
||||
}
|
||||
|
||||
override fun visitReturn(expression: IrReturn) {
|
||||
expression.value = defaultValue.expression.deepCopyWithVariables()
|
||||
expression.value = defaultValue.expression.deepCopyWithoutPatchingParents()
|
||||
}
|
||||
}
|
||||
declaration.body?.acceptChildrenVoid(bodyReplacer)
|
||||
|
||||
-1
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.deepCopyWithVariables
|
||||
import org.jetbrains.kotlin.ir.expressions.IrClassReference
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
|
||||
+3
-3
@@ -13,12 +13,12 @@ import org.jetbrains.kotlin.ir.builders.irGetField
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrProperty
|
||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||
import org.jetbrains.kotlin.ir.deepCopyWithVariables
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrGetValue
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||
import org.jetbrains.kotlin.ir.util.constructors
|
||||
import org.jetbrains.kotlin.ir.util.deepCopyWithoutPatchingParents
|
||||
import org.jetbrains.kotlin.ir.util.properties
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
|
||||
@@ -114,7 +114,7 @@ fun createInitializerAdapter(
|
||||
} else {
|
||||
rawExpression
|
||||
}
|
||||
return expression.deepCopyWithVariables().transform(initializerTransformer, null)
|
||||
return expression.deepCopyWithoutPatchingParents().transform(initializerTransformer, null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,4 +125,4 @@ private fun extractDefaultValuesFromConstructor(irClass: IrClass?): Map<IrValueS
|
||||
val defaultsMap: Map<IrValueSymbol, IrExpression?> =
|
||||
original?.valueParameters?.associate { it.symbol to it.defaultValue?.expression } ?: emptyMap()
|
||||
return defaultsMap + extractDefaultValuesFromConstructor(irClass.getSuperClassNotAny())
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.ir.builders.declarations.addProperty
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.deepCopyWithVariables
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
@@ -432,7 +431,7 @@ interface IrBuilderWithPluginContext {
|
||||
}
|
||||
|
||||
fun IrBuilderWithScope.copyAnnotationsFrom(annotations: List<IrConstructorCall>): List<IrExpression> =
|
||||
annotations.filter { it.symbol.owner.parentAsClass.isSerialInfoAnnotation }.map { it.deepCopyWithVariables() }
|
||||
annotations.filter { it.symbol.owner.parentAsClass.isSerialInfoAnnotation }.map { it.deepCopyWithoutPatchingParents() }
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
fun IrBuilderWithScope.wrapperClassReference(classType: IrType): IrClassReference {
|
||||
|
||||
+1
-2
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.deepCopyWithVariables
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
@@ -95,7 +94,7 @@ class SerializableIrGenerator(
|
||||
}
|
||||
}
|
||||
it is IrAnonymousInitializer -> {
|
||||
val statements = it.body.deepCopyWithVariables().statements
|
||||
val statements = it.body.deepCopyWithoutPatchingParents().statements
|
||||
statementsAfterSerializableProperty.getOrPutNullable(current, { mutableListOf() })
|
||||
.addAll(statements)
|
||||
}
|
||||
|
||||
+1
-2
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.deepCopyWithVariables
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
@@ -461,7 +460,7 @@ open class SerializerIrGenerator(
|
||||
val decodeSequentiallyCall = irInvoke(localInput.get(), inputClass.functionByName(CallingConventions.decodeSequentially))
|
||||
|
||||
val sequentialPart = irBlock {
|
||||
decoderCalls.forEach { (_, expr) -> +expr.deepCopyWithVariables() }
|
||||
decoderCalls.forEach { (_, expr) -> +expr.deepCopyWithoutPatchingParents() }
|
||||
}
|
||||
|
||||
val byIndexPart: IrExpression = irWhile().also { loop ->
|
||||
|
||||
Reference in New Issue
Block a user