diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java index 6e89df155d7..263842bf700 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java @@ -407,6 +407,9 @@ public class AsmUtil { if (ExpectedActualDeclarationChecker.isOptionalAnnotationClass(descriptor)) { return NO_FLAG_PACKAGE_PRIVATE; } + if (descriptor.getKind() == ClassKind.ENUM_ENTRY) { + return NO_FLAG_PACKAGE_PRIVATE; + } if (descriptor.getVisibility() == Visibilities.PUBLIC || descriptor.getVisibility() == Visibilities.PROTECTED || // TODO: should be package private, but for now Kotlin's reflection can't access members of such classes diff --git a/compiler/testData/writeFlags/class/visibility/packageprivate/enumEntry.kt b/compiler/testData/writeFlags/class/visibility/packageprivate/enumEntry.kt new file mode 100644 index 00000000000..1057270d64a --- /dev/null +++ b/compiler/testData/writeFlags/class/visibility/packageprivate/enumEntry.kt @@ -0,0 +1,9 @@ +enum class Foo { + A { + fun foo() {} + } +} + +// TESTED_OBJECT_KIND: class +// TESTED_OBJECTS: Foo$A +// FLAGS: ACC_FINAL, ACC_SUPER diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java index 8357ccf39a6..1b4cb049ecd 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java @@ -248,6 +248,24 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { } } + @TestMetadata("compiler/testData/writeFlags/class/visibility/packageprivate") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Packageprivate extends AbstractWriteFlagsTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath); + } + + public void testAllFilesPresentInPackageprivate() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/writeFlags/class/visibility/packageprivate"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("enumEntry.kt") + public void testEnumEntry() throws Exception { + runTest("compiler/testData/writeFlags/class/visibility/packageprivate/enumEntry.kt"); + } + } + @TestMetadata("compiler/testData/writeFlags/class/visibility/private") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)