From 39c6aa0f2c75e1f280d723453d3aefa5e1e90ee6 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Thu, 4 May 2017 12:56:32 +0500 Subject: [PATCH] Fixed bug in DeepCopyIrWithDescriptors --- .../common/DeepCopyIrTreeWithDescriptoros.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/DeepCopyIrTreeWithDescriptoros.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/DeepCopyIrTreeWithDescriptoros.kt index d59fa939dc0..24b2189e661 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/DeepCopyIrTreeWithDescriptoros.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/common/DeepCopyIrTreeWithDescriptoros.kt @@ -150,6 +150,22 @@ internal class DeepCopyIrTreeWithDescriptors(val targetDescriptor: DeclarationDe super.visitVariable(declaration) } + //---------------------------------------------------------------------// + + override fun visitCatch(aCatch: IrCatch) { + val oldDescriptor = aCatch.parameter + val oldContainingDeclaration = oldDescriptor.containingDeclaration + val newContainingDeclaration = descriptorSubstituteMap.getOrDefault(oldContainingDeclaration, oldContainingDeclaration) + val newDescriptor = IrTemporaryVariableDescriptorImpl( + containingDeclaration = newContainingDeclaration, + name = generateCopyName(oldDescriptor.name), + outType = substituteType(oldDescriptor.type)!!, + isMutable = oldDescriptor.isVar) + descriptorSubstituteMap[oldDescriptor] = newDescriptor + + super.visitCatch(aCatch) + } + //--- Copy descriptors ------------------------------------------------// private fun generateCopyName(name: Name): Name {