Typo fixed
This commit is contained in:
committed by
KonstantinAnisimov
parent
34733d12e6
commit
d34e5205ae
+23
-8
@@ -81,8 +81,13 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
val constructors = oldDescriptor.constructors.map {
|
val constructors = oldDescriptor.constructors.map {
|
||||||
descriptorSubstituteMap[it] as ClassConstructorDescriptor
|
descriptorSubstituteMap[it] as ClassConstructorDescriptor
|
||||||
}.toSet()
|
}.toSet()
|
||||||
val oldPrimaryConstructor = oldDescriptor.unsubstitutedPrimaryConstructor!!
|
|
||||||
val primaryConstructor = descriptorSubstituteMap[oldPrimaryConstructor] as ClassConstructorDescriptor
|
var primaryConstructor: ClassConstructorDescriptor? = null
|
||||||
|
val oldPrimaryConstructor = oldDescriptor.unsubstitutedPrimaryConstructor
|
||||||
|
if (oldPrimaryConstructor != null) {
|
||||||
|
primaryConstructor = descriptorSubstituteMap[oldPrimaryConstructor] as ClassConstructorDescriptor
|
||||||
|
}
|
||||||
|
|
||||||
newDescriptor.initialize(
|
newDescriptor.initialize(
|
||||||
oldDescriptor.unsubstitutedMemberScope,
|
oldDescriptor.unsubstitutedMemberScope,
|
||||||
constructors,
|
constructors,
|
||||||
@@ -145,7 +150,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
oldDescriptor.source
|
oldDescriptor.source
|
||||||
).apply { isTailrec = oldDescriptor.isTailrec }
|
).apply { isTailrec = oldDescriptor.isTailrec }
|
||||||
|
|
||||||
val newDispatchReceiverParameter = null
|
val newDispatchReceiverParameter = null // TODO
|
||||||
val newTypeParameters = oldDescriptor.typeParameters
|
val newTypeParameters = oldDescriptor.typeParameters
|
||||||
val newValueParameters = copyValueParameters(oldDescriptor.valueParameters, memberOwner)
|
val newValueParameters = copyValueParameters(oldDescriptor.valueParameters, memberOwner)
|
||||||
|
|
||||||
@@ -197,7 +202,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
generateName(oldDescriptor.name),
|
generateName(oldDescriptor.name),
|
||||||
oldDescriptor.modality,
|
oldDescriptor.modality,
|
||||||
oldDescriptor.kind,
|
oldDescriptor.kind,
|
||||||
listOf(context.builtIns.anyType),
|
listOf(context.builtIns.anyType), // TODO get list of real supertypes
|
||||||
oldDescriptor.source,
|
oldDescriptor.source,
|
||||||
oldDescriptor.isExternal
|
oldDescriptor.isExternal
|
||||||
)
|
)
|
||||||
@@ -249,11 +254,21 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
|
|||||||
override fun visitCall(expression: IrCall): IrExpression {
|
override fun visitCall(expression: IrCall): IrExpression {
|
||||||
|
|
||||||
val irCall = super.visitCall(expression) as IrCall
|
val irCall = super.visitCall(expression) as IrCall
|
||||||
if (irCall !is IrCallImpl) return irCall
|
if (irCall !is IrCallImpl) return irCall // TODO what other kinds of call can we meet?
|
||||||
|
|
||||||
val descriptor = descriptorSubstituteMap.getOrDefault(irCall.descriptor, irCall.descriptor) as FunctionDescriptor
|
val oldDescriptor = irCall.descriptor
|
||||||
return IrCallImpl(irCall.startOffset, irCall.endOffset, irCall.type, descriptor,
|
val newDescriptor = descriptorSubstituteMap.getOrDefault(oldDescriptor,
|
||||||
irCall.typeArguments, irCall.origin, irCall.superQualifier).apply {
|
oldDescriptor) as FunctionDescriptor
|
||||||
|
|
||||||
|
val oldSuperQualifier = irCall.superQualifier
|
||||||
|
var newSuperQualifier: ClassDescriptor? = oldSuperQualifier
|
||||||
|
if (newSuperQualifier != null) {
|
||||||
|
newSuperQualifier = descriptorSubstituteMap.getOrDefault(newSuperQualifier,
|
||||||
|
newSuperQualifier) as ClassDescriptor
|
||||||
|
}
|
||||||
|
|
||||||
|
return IrCallImpl(irCall.startOffset, irCall.endOffset, irCall.type, newDescriptor,
|
||||||
|
irCall.typeArguments, irCall.origin, newSuperQualifier).apply {
|
||||||
irCall.descriptor.valueParameters.forEach {
|
irCall.descriptor.valueParameters.forEach {
|
||||||
val valueArgument = irCall.getValueArgument(it)
|
val valueArgument = irCall.getValueArgument(it)
|
||||||
putValueArgument(it.index, valueArgument)
|
putValueArgument(it.index, valueArgument)
|
||||||
|
|||||||
+1
-1
@@ -186,7 +186,7 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoid(
|
|||||||
|
|
||||||
private fun createInlineFunctionBody(functionDeclaration: IrFunction): IrInlineFunctionBody? {
|
private fun createInlineFunctionBody(functionDeclaration: IrFunction): IrInlineFunctionBody? {
|
||||||
|
|
||||||
val originBlockBody = functionDeclaration.body!!
|
val originBlockBody = functionDeclaration.body
|
||||||
if (originBlockBody == null) return null // TODO workaround
|
if (originBlockBody == null) return null // TODO workaround
|
||||||
|
|
||||||
val copyBlockBody = originBlockBody.accept(InlineCopyIr(), null) as IrBlockBody // Create copy of original function body.
|
val copyBlockBody = originBlockBody.accept(InlineCopyIr(), null) as IrBlockBody // Create copy of original function body.
|
||||||
|
|||||||
Reference in New Issue
Block a user