Minor: extract ClassDescriptor.secondaryConstructors extension property

This commit is contained in:
Pavel V. Talanov
2015-03-13 12:32:59 +03:00
parent 4fa5d9cb48
commit 188ada2089
3 changed files with 7 additions and 4 deletions
@@ -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);
}
}
@@ -96,3 +96,6 @@ public fun ClassDescriptor.getSuperClassNotAny(): ClassDescriptor? {
}
public fun ClassDescriptor.getSuperClassOrAny(): ClassDescriptor = getSuperClassNotAny() ?: KotlinBuiltIns.getInstance().getAny()
public val ClassDescriptor.secondaryConstructors: List<ConstructorDescriptor>
get() = getConstructors().filterNot { it.isPrimary() }
@@ -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));
}