From 530214fcee433e3c0c2204868e9c90871b8d10e5 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 2 Mar 2017 14:07:03 +0300 Subject: [PATCH] Minor. Simplify mapping to callable method There's no need in unwrapping for TypeAliasConstructorDescriptor because mapSignatureSkipGeneric/mapDefaultMethod already do it in some moment, and ConstructorDescriptor has getConstructedClass method for mapping its owner --- .../kotlin/codegen/state/KotlinTypeMapper.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java index 31187557e96..0287239dced 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java @@ -192,6 +192,10 @@ public class KotlinTypeMapper { return asmTypeForAnonymousClass(bindingContext, (FunctionDescriptor) descriptor); } + if (descriptor instanceof ConstructorDescriptor) { + return mapClass(((ConstructorDescriptor) descriptor).getConstructedClass()); + } + DeclarationDescriptor container = descriptor.getContainingDeclaration(); if (container instanceof PackageFragmentDescriptor) { String packageMemberOwner = internalNameForPackageMemberOwner((CallableMemberDescriptor) descriptor, publicFacade); @@ -702,15 +706,14 @@ public class KotlinTypeMapper { @NotNull public CallableMethod mapToCallableMethod(@NotNull FunctionDescriptor descriptor, boolean superCall) { - if (descriptor instanceof TypeAliasConstructorDescriptor) { - return mapToCallableMethod(((TypeAliasConstructorDescriptor) descriptor).getUnderlyingConstructorDescriptor(), superCall); - } - - if (descriptor instanceof ClassConstructorDescriptor) { + if (descriptor instanceof ConstructorDescriptor) { JvmMethodSignature method = mapSignatureSkipGeneric(descriptor); - Type owner = mapClass(((ClassConstructorDescriptor) descriptor).getContainingDeclaration()); + Type owner = mapOwner(descriptor); String defaultImplDesc = mapDefaultMethod(descriptor, OwnerKind.IMPLEMENTATION).getDescriptor(); - return new CallableMethod(owner, owner, defaultImplDesc, method, INVOKESPECIAL, null, null, null, false); + return new CallableMethod( + owner, owner, defaultImplDesc, method, INVOKESPECIAL, + null, null, null, false + ); } if (descriptor instanceof LocalVariableAccessorDescriptor) {