Minor refactoring
This commit is contained in:
committed by
KonstantinAnisimov
parent
90b910fd53
commit
276c14a896
+10
-8
@@ -42,7 +42,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
|||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -174,8 +173,9 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
|
|
||||||
private fun copySimpleFunctionDescriptor(oldDescriptor: SimpleFunctionDescriptor) : FunctionDescriptor {
|
private fun copySimpleFunctionDescriptor(oldDescriptor: SimpleFunctionDescriptor) : FunctionDescriptor {
|
||||||
|
|
||||||
val oldContainingDeclaration = oldDescriptor.containingDeclaration
|
val oldContainingDeclaration = oldDescriptor.containingDeclaration // TODO should target function to be containing declaration
|
||||||
val memberOwner = descriptorSubstituteMap[oldContainingDeclaration] ?: targetFunction.descriptor
|
val newContainingDeclaration = descriptorSubstituteMap[oldContainingDeclaration] ?: targetFunction.descriptor
|
||||||
|
|
||||||
val newDescriptor = SimpleFunctionDescriptorImpl.create(
|
val newDescriptor = SimpleFunctionDescriptorImpl.create(
|
||||||
containingDeclaration,
|
containingDeclaration,
|
||||||
oldDescriptor.annotations,
|
oldDescriptor.annotations,
|
||||||
@@ -188,11 +188,13 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
val newDispatchReceiverParameter =
|
val newDispatchReceiverParameter =
|
||||||
if (oldDispatchReceiverParameter == null) null
|
if (oldDispatchReceiverParameter == null) null
|
||||||
else descriptorSubstituteMap[oldDispatchReceiverParameter]
|
else descriptorSubstituteMap[oldDispatchReceiverParameter]
|
||||||
val newTypeParameters = oldDescriptor.typeParameters
|
val newTypeParameters = oldDescriptor.typeParameters // TODO substitute types
|
||||||
val newValueParameters = copyValueParameters(oldDescriptor.valueParameters, newDescriptor)
|
val newValueParameters = copyValueParameters(oldDescriptor.valueParameters, newDescriptor)
|
||||||
|
val receiverParameterType = substituteType(oldDescriptor.extensionReceiverParameter?.type)
|
||||||
|
val newReturnType = substituteType(oldDescriptor.returnType)
|
||||||
|
|
||||||
newDescriptor.initialize(
|
newDescriptor.initialize(
|
||||||
oldDescriptor.extensionReceiverParameter?.type,
|
receiverParameterType,
|
||||||
newDispatchReceiverParameter as? ReceiverParameterDescriptor,
|
newDispatchReceiverParameter as? ReceiverParameterDescriptor,
|
||||||
newTypeParameters,
|
newTypeParameters,
|
||||||
newValueParameters,
|
newValueParameters,
|
||||||
@@ -299,7 +301,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
val oldExpression = super.visitCall(expression) as IrCall
|
val oldExpression = super.visitCall(expression) as IrCall
|
||||||
if (oldExpression !is IrCallImpl) return oldExpression // TODO what other kinds of call can we meet?
|
if (oldExpression !is IrCallImpl) return oldExpression // TODO what other kinds of call can we meet?
|
||||||
|
|
||||||
val oldDescriptor = irCall.descriptor
|
val oldDescriptor = oldExpression.descriptor
|
||||||
val newDescriptor = descriptorSubstituteMap.getOrDefault(oldDescriptor.original,
|
val newDescriptor = descriptorSubstituteMap.getOrDefault(oldDescriptor.original,
|
||||||
oldDescriptor) as FunctionDescriptor
|
oldDescriptor) as FunctionDescriptor
|
||||||
|
|
||||||
@@ -314,7 +316,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
oldExpression.startOffset,
|
oldExpression.startOffset,
|
||||||
oldExpression.endOffset,
|
oldExpression.endOffset,
|
||||||
substituteType(oldExpression.type)!!,
|
substituteType(oldExpression.type)!!,
|
||||||
newDescriptor as FunctionDescriptor,
|
newDescriptor,
|
||||||
substituteTypeArguments(oldExpression.typeArguments),
|
substituteTypeArguments(oldExpression.typeArguments),
|
||||||
oldExpression.origin,
|
oldExpression.origin,
|
||||||
newSuperQualifier
|
newSuperQualifier
|
||||||
|
|||||||
Reference in New Issue
Block a user