diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java index 5926e9d0a2e..8e9424a6f66 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java @@ -307,10 +307,11 @@ public class AsmUtil { case ANNOTATION_CLASS: return ACC_ABSTRACT | ACC_ANNOTATION | ACC_INTERFACE; default: - if (innerClass.getModality() == Modality.FINAL) { + Modality modality = innerClass.getModality(); + if (modality == Modality.FINAL) { return ACC_FINAL; } - else if (innerClass.getModality() == Modality.ABSTRACT) { + else if (modality == Modality.ABSTRACT || modality == Modality.SEALED) { return ACC_ABSTRACT; } } diff --git a/compiler/testData/writeFlags/class/accessFlags/innerSealed.kt b/compiler/testData/writeFlags/class/accessFlags/innerSealed.kt new file mode 100644 index 00000000000..47cc97b9fbb --- /dev/null +++ b/compiler/testData/writeFlags/class/accessFlags/innerSealed.kt @@ -0,0 +1,11 @@ +class Foo { + sealed class Bar +} + +// TESTED_OBJECT_KIND: class +// TESTED_OBJECTS: Foo$Bar +// FLAGS: ACC_PUBLIC, ACC_ABSTRACT, ACC_SUPER + +// TESTED_OBJECT_KIND: innerClass +// TESTED_OBJECTS: Foo, Bar +// FLAGS: ACC_PUBLIC, ACC_ABSTRACT, ACC_STATIC \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java index e994e53f97a..4e21b8650a7 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java @@ -100,6 +100,12 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { doTest(fileName); } + @TestMetadata("innerSealed.kt") + public void testInnerSealed() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/class/accessFlags/innerSealed.kt"); + doTest(fileName); + } + @TestMetadata("mappingWhen.kt") public void testMappingWhen() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/class/accessFlags/mappingWhen.kt");