Typo fixed

This commit is contained in:
Konstantin Anisimov
2017-03-30 22:19:09 +07:00
committed by KonstantinAnisimov
parent 34733d12e6
commit d34e5205ae
2 changed files with 24 additions and 9 deletions
@@ -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)
@@ -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.