diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java index 6e89df155d7..9c434516606 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java @@ -546,16 +546,8 @@ public class AsmUtil { 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; - } + if (memberDescriptor instanceof ConstructorDescriptor && isEnumEntry(containingDeclaration)) { + return NO_FLAG_PACKAGE_PRIVATE; } return null; diff --git a/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java index 59b6ae766ff..aeaedcd3053 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; - protected E() { /* compiled code */ } + private E() { /* compiled code */ } } diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassTypeParametersInConstructor.txt index 2518eb1d976..bdf99817fb4 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 - protected method (p0: java.lang.String, p1: int, p2: int): void + private 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 new file mode 100644 index 00000000000..235310cd3dd --- /dev/null +++ b/compiler/testData/writeFlags/function/constructors/enum.kt @@ -0,0 +1,7 @@ +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 8357ccf39a6..84f289e32ac 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java @@ -444,6 +444,11 @@ 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");