Fix for KT-14774: Incorrect inner class modifier generated for sealed inner classes
#KT-14774 Fixed
This commit is contained in:
@@ -307,10 +307,11 @@ public class AsmUtil {
|
|||||||
case ANNOTATION_CLASS:
|
case ANNOTATION_CLASS:
|
||||||
return ACC_ABSTRACT | ACC_ANNOTATION | ACC_INTERFACE;
|
return ACC_ABSTRACT | ACC_ANNOTATION | ACC_INTERFACE;
|
||||||
default:
|
default:
|
||||||
if (innerClass.getModality() == Modality.FINAL) {
|
Modality modality = innerClass.getModality();
|
||||||
|
if (modality == Modality.FINAL) {
|
||||||
return ACC_FINAL;
|
return ACC_FINAL;
|
||||||
}
|
}
|
||||||
else if (innerClass.getModality() == Modality.ABSTRACT) {
|
else if (modality == Modality.ABSTRACT || modality == Modality.SEALED) {
|
||||||
return ACC_ABSTRACT;
|
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);
|
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")
|
@TestMetadata("mappingWhen.kt")
|
||||||
public void testMappingWhen() throws Exception {
|
public void testMappingWhen() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/class/accessFlags/mappingWhen.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/class/accessFlags/mappingWhen.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user