From e72b177adc8645276e62652e1d15c16484feffeb Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 30 Apr 2013 18:37:38 +0400 Subject: [PATCH] KT-3561 Bad RuntimeInvisibleParameterAnnotations on attempt to annotate enum constructor hidden parametrs - name and ordinal --- .../src/org/jetbrains/jet/codegen/FunctionCodegen.java | 3 +++ .../testData/compileJavaAgainstKotlin/class/kt3561.java | 7 +++++++ compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt | 6 ++++++ .../compiler/CompileJavaAgainstKotlinTestGenerated.java | 5 +++++ 4 files changed, 21 insertions(+) create mode 100644 compiler/testData/compileJavaAgainstKotlin/class/kt3561.java create mode 100644 compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index 1cd9ca64071..ab6709efe53 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -385,6 +385,9 @@ public class FunctionCodegen extends GenerationStateAware { if (kind == JvmMethodParameterKind.VALUE) { parameterDescriptor = valueParameters.next(); parameterName = parameterDescriptor.getName().getName(); + } else if (kind == JvmMethodParameterKind.ENUM_NAME || kind == JvmMethodParameterKind.ENUM_ORDINAL) { + //we shouldn't generate annotations for invisible in runtime parameters otherwise we get bad RuntimeInvisibleParameterAnnotations error in javac + continue; } else if (needIndexForVar(kind)) { parameterName = parameterName + "$" + i; } diff --git a/compiler/testData/compileJavaAgainstKotlin/class/kt3561.java b/compiler/testData/compileJavaAgainstKotlin/class/kt3561.java new file mode 100644 index 00000000000..e6dd3168450 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/class/kt3561.java @@ -0,0 +1,7 @@ +package test; + +public class kt3561 { + public MyEnum getEntryName() { + return MyEnum.OK; + } +} diff --git a/compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt b/compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt new file mode 100644 index 00000000000..a57b7dff894 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt @@ -0,0 +1,6 @@ +package test + +enum class MyEnum { + OK +} + diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java index 528680394b7..c6f6c63623f 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java @@ -73,6 +73,11 @@ public class CompileJavaAgainstKotlinTestGenerated extends AbstractCompileJavaAg doTest("compiler/testData/compileJavaAgainstKotlin/class/ImplementsMapPP.kt"); } + @TestMetadata("kt3561.kt") + public void testKt3561() throws Exception { + doTest("compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt"); + } + @TestMetadata("Simple.kt") public void testSimple() throws Exception { doTest("compiler/testData/compileJavaAgainstKotlin/class/Simple.kt");