diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java index 9c434516606..6e89df155d7 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java @@ -546,8 +546,16 @@ public class AsmUtil { return NO_FLAG_PACKAGE_PRIVATE; } - if (memberDescriptor instanceof ConstructorDescriptor && isEnumEntry(containingDeclaration)) { - return NO_FLAG_PACKAGE_PRIVATE; + // the following code is only for PRIVATE visibility of member + if (memberDescriptor instanceof ConstructorDescriptor) { + if (isEnumEntry(containingDeclaration)) { + return NO_FLAG_PACKAGE_PRIVATE; + } + if (isEnumClass(containingDeclaration)) { + //TODO: should be ACC_PRIVATE + // see http://youtrack.jetbrains.com/issue/KT-2680 + return ACC_PROTECTED; + } } return null; diff --git a/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java index aeaedcd3053..59b6ae766ff 100644 --- a/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java +++ b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java @@ -9,5 +9,5 @@ public enum E { @kotlin.Deprecated(message = "b") Entry3; - private E() { /* compiled code */ } + protected E() { /* compiled code */ } } diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.txt index bdf99817fb4..2518eb1d976 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.txt @@ -26,7 +26,7 @@ public final enum class TestEnum { public final static field ANSWER: TestEnum private final field z: int static method (): void - private method (p0: java.lang.String, p1: int, p2: int): void + protected method (p0: java.lang.String, p1: int, p2: int): void public final method getZ(): int public static method valueOf(p0: java.lang.String): TestEnum public static method values(): TestEnum[] diff --git a/compiler/testData/writeFlags/function/constructors/enum.kt b/compiler/testData/writeFlags/function/constructors/enum.kt deleted file mode 100644 index 235310cd3dd..00000000000 --- a/compiler/testData/writeFlags/function/constructors/enum.kt +++ /dev/null @@ -1,7 +0,0 @@ -enum class Foo { - A, B, C -} - -// TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Foo, -// FLAGS: ACC_PRIVATE diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java index 84f289e32ac..8357ccf39a6 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java @@ -444,11 +444,6 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { runTest("compiler/testData/writeFlags/function/constructors/classObject.kt"); } - @TestMetadata("enum.kt") - public void testEnum() throws Exception { - runTest("compiler/testData/writeFlags/function/constructors/enum.kt"); - } - @TestMetadata("objectInClass.kt") public void testObjectInClass() throws Exception { runTest("compiler/testData/writeFlags/function/constructors/objectInClass.kt");