@@ -766,7 +766,7 @@ abstract class BCodeTypes extends BCodeIdiomatic {
766766
767767 val INNER_CLASSES_FLAGS =
768768 (asm.Opcodes .ACC_PUBLIC | asm.Opcodes .ACC_PRIVATE | asm.Opcodes .ACC_PROTECTED |
769- asm.Opcodes .ACC_STATIC | asm.Opcodes .ACC_INTERFACE | asm.Opcodes .ACC_ABSTRACT )
769+ asm.Opcodes .ACC_STATIC | asm.Opcodes .ACC_INTERFACE | asm.Opcodes .ACC_ABSTRACT | asm. Opcodes . ACC_FINAL )
770770
771771 /*
772772 * @param name the internal name of an inner class.
@@ -876,11 +876,12 @@ abstract class BCodeTypes extends BCodeIdiomatic {
876876 innerSym.rawname + innerSym.moduleSuffix
877877 }
878878
879- val access = mkFlags(
879+ val flagsWithFinal : Int = mkFlags(
880880 if (innerSym.rawowner.hasModuleFlag) asm.Opcodes .ACC_STATIC else 0 ,
881881 javaFlags(innerSym),
882882 if (isDeprecated(innerSym)) asm.Opcodes .ACC_DEPRECATED else 0 // ASM pseudo-access flag
883883 ) & (INNER_CLASSES_FLAGS | asm.Opcodes .ACC_DEPRECATED )
884+ val flags = if (innerSym.isModuleClass) flagsWithFinal & ~ asm.Opcodes .ACC_FINAL else flagsWithFinal // For SI-5676, object overriding.
884885
885886 val jname = innerSym.javaBinaryName.toString // never null
886887 val oname = { // null when method-enclosed
@@ -892,7 +893,7 @@ abstract class BCodeTypes extends BCodeIdiomatic {
892893 if (in == null ) null else in.toString
893894 }
894895
895- InnerClassEntry (jname, oname, iname, access )
896+ InnerClassEntry (jname, oname, iname, flags )
896897 }
897898
898899 // --------------------------------------------
0 commit comments