diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBodyCodegen.java index 79c4f4571eb..b7240c5b536 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBodyCodegen.java @@ -216,7 +216,7 @@ public abstract class ClassBodyCodegen extends MemberCodegen entry : CodegenUtil.getNonPrivateTraitMethods(descriptor).entrySet()) { @@ -271,47 +271,48 @@ public abstract class ClassBodyCodegen extends MemberCodegen argsDescriptors = getParameters(inheritedFun); - List originalArgsDescriptors = getParameters(interfaceFun); - assert argsDescriptors.size() == originalArgsDescriptors.size() : + List myParameters = getParameters(inheritedFun); + List toParameters = getParameters(interfaceFun); + assert myParameters.size() == toParameters.size() : "Inconsistent value parameters between delegating fun " + inheritedFun + "and interface fun " + interfaceFun; - Iterator argsIterator = argsDescriptors.iterator(); - Iterator originalArgsIterator = originalArgsDescriptors.iterator(); - for (; argI < argTypes.length; argI++, originalArgI++) { - Type argType = argTypes[argI]; - KotlinType argKotlinType = argsIterator.next().getType(); + Iterator myParametersIterator = myParameters.iterator(); + Iterator toParametersIterator = toParameters.iterator(); + for (; myArgI < myArgTypes.length; myArgI++, toArgI++) { + Type argType = myArgTypes[myArgI]; + KotlinType argKotlinType = myParametersIterator.next().getType(); - Type originalArgType = originalArgTypes[originalArgI]; - KotlinType originalArgKotlinType = originalArgsIterator.next().getType(); + Type originalArgType = toArgTypes[toArgI]; + KotlinType originalArgKotlinType = toParametersIterator.next().getType(); - StackValue.local(reg, argType, argKotlinType) + StackValue.local(argVar, argType, argKotlinType) .put(originalArgType, originalArgKotlinType, iv); - reg += argType.getSize(); + argVar += argType.getSize(); } - assert originalArgI == originalArgTypes.length : - "Invalid trait implementation signature: " + signature + " vs " + traitMethod + " for " + interfaceFun; + assert toArgI == toArgTypes.length : + "Invalid trait implementation signature: " + signature + " vs " + defaultImplsMethod + " for " + interfaceFun; } private List getParameters(FunctionDescriptor functionDescriptor) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ErasedInlineClassBodyCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/ErasedInlineClassBodyCodegen.kt index b75b1d97820..09f0a67d23b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ErasedInlineClassBodyCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ErasedInlineClassBodyCodegen.kt @@ -49,7 +49,7 @@ class ErasedInlineClassBodyCodegen( override fun generateSyntheticPartsAfterBody() { super.generateSyntheticPartsAfterBody() - generateTraitMethods() + generateDelegatesToDefaultImpl() generateUnboxMethod() generateFunctionsFromAny() generateSpecializedEqualsStub() diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index 9b78bd54308..2ea2e3a3b16 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -13,7 +13,6 @@ import kotlin.collections.CollectionsKt; import kotlin.jvm.functions.Function2; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.backend.common.CodegenUtil; import org.jetbrains.kotlin.backend.common.DataClassMethodGenerator; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap; @@ -73,9 +72,7 @@ import static org.jetbrains.kotlin.resolve.BindingContextUtils.getNotNull; import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.descriptorToDeclaration; import static org.jetbrains.kotlin.resolve.DescriptorUtils.*; import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.OBJECT_TYPE; -import static org.jetbrains.kotlin.resolve.jvm.annotations.JvmAnnotationUtilKt.hasJvmDefaultAnnotation; import static org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin.NO_ORIGIN; -import static org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.CLASS_MEMBER_DELEGATION_TO_DEFAULT_IMPL; import static org.jetbrains.kotlin.types.Variance.INVARIANT; import static org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils.isLocalFunction; import static org.jetbrains.org.objectweb.asm.Opcodes.*; @@ -411,7 +408,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { generateCompanionObjectBackingFieldCopies(); - generateTraitMethods(); + generateDelegatesToDefaultImpl(); generateDelegates(delegationFieldsInfo);