From 188ada208947c80df74460a3d5c96132b7d2169f Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 13 Mar 2015 12:32:59 +0300 Subject: [PATCH] Minor: extract ClassDescriptor.secondaryConstructors extension property --- .../jetbrains/kotlin/codegen/ImplementationBodyCodegen.java | 4 ++-- .../src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt | 3 +++ .../jetbrains/kotlin/serialization/DescriptorSerializer.java | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index d10325fb990..659d296cc4e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -76,6 +76,7 @@ import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.*; import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.enumEntryNeedSubclass; import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.descriptorToDeclaration; import static org.jetbrains.kotlin.resolve.DescriptorUtils.*; +import static org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage.getSecondaryConstructors; import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.*; import static org.jetbrains.kotlin.resolve.jvm.diagnostics.DiagnosticsPackage.*; import static org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin.NO_ORIGIN; @@ -354,8 +355,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { try { lookupConstructorExpressionsInClosureIfPresent(); generatePrimaryConstructor(delegationFieldsInfo); - for (ConstructorDescriptor secondaryConstructor : descriptor.getConstructors()) { - if (secondaryConstructor.isPrimary()) continue; + for (ConstructorDescriptor secondaryConstructor : getSecondaryConstructors(descriptor)) { generateSecondaryConstructor(secondaryConstructor); } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt index c6206cf41dd..137bb9ca871 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt @@ -96,3 +96,6 @@ public fun ClassDescriptor.getSuperClassNotAny(): ClassDescriptor? { } public fun ClassDescriptor.getSuperClassOrAny(): ClassDescriptor = getSuperClassNotAny() ?: KotlinBuiltIns.getInstance().getAny() + +public val ClassDescriptor.secondaryConstructors: List + get() = getConstructors().filterNot { it.isPrimary() } \ No newline at end of file diff --git a/core/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.java b/core/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.java index 4a52072f5a4..a8d8e3dedfc 100644 --- a/core/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.java +++ b/core/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.java @@ -32,6 +32,7 @@ import java.util.Collections; import java.util.List; import static org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry; +import static org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage.getSecondaryConstructors; public class DescriptorSerializer { @@ -110,8 +111,7 @@ public class DescriptorSerializer { } } - for (ConstructorDescriptor constructorDescriptor : classDescriptor.getConstructors()) { - if (constructorDescriptor.isPrimary()) continue; + for (ConstructorDescriptor constructorDescriptor : getSecondaryConstructors(classDescriptor)) { builder.addSecondaryConstructor(callableProto(constructorDescriptor)); }