Fix for KT-14774: Incorrect inner class modifier generated for sealed inner classes

#KT-14774 Fixed
This commit is contained in:
Mikhael Bogdanov
2016-12-15 15:21:52 +01:00
parent 654cecde69
commit 004ff86bec
3 changed files with 20 additions and 2 deletions
@@ -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;
}
}
@@ -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
@@ -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");