diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index d0e6525faeb..db7b855ba78 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -369,6 +369,14 @@ public class FunctionCodegen extends GenerationStateAware { throw new IllegalStateException(); } + generateMethodParametersAnnotations(mv, functionDescriptor, jvmSignature); + } + + void generateMethodParametersAnnotations( + MethodVisitor mv, + FunctionDescriptor functionDescriptor, + JvmMethodSignature jvmSignature + ) { Iterator valueParameters = functionDescriptor.getValueParameters().iterator(); List kotlinParameterTypes = jvmSignature.getKotlinParameterTypes(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index ec0ef763764..7093c1dc3fb 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -1362,6 +1362,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { } else if (state.getClassBuilderMode() == ClassBuilderMode.FULL) { writeAnnotationForDelegateToTraitImpl(fun, inheritedFun, mv); + functionCodegen.generateMethodParametersAnnotations(mv, fun, typeMapper.mapSignature(fun)); Type returnType = methodToGenerate.getReturnType(); diff --git a/compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.kt b/compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.kt new file mode 100644 index 00000000000..1fcc3c569f1 --- /dev/null +++ b/compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.kt @@ -0,0 +1,9 @@ +package test + +trait Trait { + open fun f(a: String) { + } +} + +open class Class : Trait { +} \ No newline at end of file diff --git a/compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.txt b/compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.txt new file mode 100644 index 00000000000..7d00bc1df7c --- /dev/null +++ b/compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.txt @@ -0,0 +1,10 @@ +package test + +internal open class Class : test.Trait { + /*primary*/ public constructor Class() + internal open override /*1*/ /*fake_override*/ fun f(/*0*/ a: jet.String): jet.Unit +} + +internal trait Trait { + internal open fun f(/*0*/ a: jet.String): jet.Unit +} diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java index 4416d106319..206b7283094 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java @@ -138,6 +138,11 @@ public class LoadCompiledKotlinTestGenerated extends AbstractLoadCompiledKotlinT doTestWithAccessors("compiler/testData/loadKotlin/class/InheritSubstitutedMethod.kt"); } + @TestMetadata("InheritTraitWithFunctionParam.kt") + public void testInheritTraitWithFunctionParam() throws Exception { + doTestWithAccessors("compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.kt"); + } + @TestMetadata("InheritTraitWithParam.kt") public void testInheritTraitWithParam() throws Exception { doTestWithAccessors("compiler/testData/loadKotlin/class/InheritTraitWithParam.kt"); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java index 4eb05ca9dc4..49fddcd3e18 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java @@ -140,6 +140,11 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/class/InheritSubstitutedMethod.kt"); } + @TestMetadata("InheritTraitWithFunctionParam.kt") + public void testInheritTraitWithFunctionParam() throws Exception { + doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/class/InheritTraitWithFunctionParam.kt"); + } + @TestMetadata("InheritTraitWithParam.kt") public void testInheritTraitWithParam() throws Exception { doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/class/InheritTraitWithParam.kt");