diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 305dd79bb58..28783323514 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -66,6 +66,7 @@ import org.jetbrains.org.objectweb.asm.commons.Method; import java.util.*; import static org.jetbrains.jet.codegen.AsmUtil.*; +import static org.jetbrains.jet.codegen.CodegenPackage.DelegationToTraitImpl; import static org.jetbrains.jet.codegen.CodegenPackage.OtherOrigin; import static org.jetbrains.jet.codegen.JvmCodegenUtil.*; import static org.jetbrains.jet.codegen.JvmDeclarationOrigin.NO_ORIGIN; @@ -1449,7 +1450,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { private void generateDelegationToTraitImpl(@NotNull final FunctionDescriptor traitFun, @NotNull FunctionDescriptor inheritedFun) { functionCodegen.generateMethod( - OtherOrigin(descriptorToDeclaration(bindingContext, traitFun), traitFun), + DelegationToTraitImpl(descriptorToDeclaration(bindingContext, traitFun), traitFun), typeMapper.mapSignature(inheritedFun), inheritedFun, new FunctionGenerationStrategy.CodegenBased(state, inheritedFun) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt b/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt index d9fe0853474..6e122149ef6 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt @@ -22,6 +22,9 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor import org.jetbrains.jet.lang.psi.JetFile import org.jetbrains.jet.lang.descriptors.ClassDescriptor import org.jetbrains.jet.lang.psi.JetClassOrObject +import org.jetbrains.jet.lang.psi.JetDeclaration +import org.jetbrains.jet.lang.descriptors.FunctionDescriptor +import org.jetbrains.jet.codegen.JvmDeclarationOriginKind.* public enum class MemberKind { FIELD; METHOD } @@ -30,6 +33,7 @@ public enum class JvmDeclarationOriginKind { PACKAGE_FACADE PACKAGE_PART TRAIT_IMPL + DELEGATION_TO_TRAIT_IMPL } public class JvmDeclarationOrigin( @@ -38,21 +42,22 @@ public class JvmDeclarationOrigin( val descriptor: DeclarationDescriptor? ) { class object { - public val NO_ORIGIN: JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, null, null) + public val NO_ORIGIN: JvmDeclarationOrigin = JvmDeclarationOrigin(OTHER, null, null) } } public fun OtherOrigin(element: PsiElement?, descriptor: DeclarationDescriptor?): JvmDeclarationOrigin = if (element == null && descriptor == null) JvmDeclarationOrigin.NO_ORIGIN - else JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, element, descriptor) + else JvmDeclarationOrigin(OTHER, element, descriptor) public fun OtherOrigin(element: PsiElement?): JvmDeclarationOrigin = OtherOrigin(element, null) public fun OtherOrigin(descriptor: DeclarationDescriptor?): JvmDeclarationOrigin = OtherOrigin(null, descriptor) -public fun PackageFacade(descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.PACKAGE_FACADE, null, descriptor) -public fun PackagePart(file: JetFile, descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.PACKAGE_PART, file, descriptor) +public fun PackageFacade(descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(PACKAGE_FACADE, null, descriptor) +public fun PackagePart(file: JetFile, descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(PACKAGE_PART, file, descriptor) -public fun TraitImpl(element: JetClassOrObject, descriptor: ClassDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.TRAIT_IMPL, element, descriptor) +public fun TraitImpl(element: JetClassOrObject, descriptor: ClassDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(TRAIT_IMPL, element, descriptor) +public fun DelegationToTraitImpl(element: PsiElement?, descriptor: FunctionDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(DELEGATION_TO_TRAIT_IMPL, element, descriptor)