diff options
author | Miguel Garcia <miguelalfredo.garcia@epfl.ch> | 2013-06-27 21:12:21 +0200 |
---|---|---|
committer | Miguel Garcia <miguelalfredo.garcia@epfl.ch> | 2013-06-27 21:12:21 +0200 |
commit | 8281ab5c2950aa8ea0017fc4b0c40a7eafda2931 (patch) | |
tree | a8700b8c21bfa1f5159e3bcdc060d0947d2d1862 | |
parent | e8d1612de49418034cc319508b5f6bcb5a7367e6 (diff) | |
download | scala-8281ab5c2950aa8ea0017fc4b0c40a7eafda2931.tar.gz scala-8281ab5c2950aa8ea0017fc4b0c40a7eafda2931.tar.bz2 scala-8281ab5c2950aa8ea0017fc4b0c40a7eafda2931.zip |
catching up with a fix in master after this PR was submitted
SI-7151 Emit final in bytecode for final inner classes
was fixed in https://github.com/scala/scala/commit/b49b6cf7f0f42d74da854d96eeb0f863357c04cd
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/BCodeTypes.scala | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeTypes.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeTypes.scala index 2e473f39c0..cf34911f88 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeTypes.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeTypes.scala @@ -766,7 +766,7 @@ abstract class BCodeTypes extends BCodeIdiomatic { val INNER_CLASSES_FLAGS = (asm.Opcodes.ACC_PUBLIC | asm.Opcodes.ACC_PRIVATE | asm.Opcodes.ACC_PROTECTED | - asm.Opcodes.ACC_STATIC | asm.Opcodes.ACC_INTERFACE | asm.Opcodes.ACC_ABSTRACT) + asm.Opcodes.ACC_STATIC | asm.Opcodes.ACC_INTERFACE | asm.Opcodes.ACC_ABSTRACT | asm.Opcodes.ACC_FINAL) /* * @param name the internal name of an inner class. @@ -876,11 +876,12 @@ abstract class BCodeTypes extends BCodeIdiomatic { innerSym.rawname + innerSym.moduleSuffix } - val access = mkFlags( + val flagsWithFinal: Int = mkFlags( if (innerSym.rawowner.hasModuleFlag) asm.Opcodes.ACC_STATIC else 0, javaFlags(innerSym), if (isDeprecated(innerSym)) asm.Opcodes.ACC_DEPRECATED else 0 // ASM pseudo-access flag ) & (INNER_CLASSES_FLAGS | asm.Opcodes.ACC_DEPRECATED) + val flags = if (innerSym.isModuleClass) flagsWithFinal & ~asm.Opcodes.ACC_FINAL else flagsWithFinal // For SI-5676, object overriding. val jname = innerSym.javaBinaryName.toString // never null val oname = { // null when method-enclosed @@ -892,7 +893,7 @@ abstract class BCodeTypes extends BCodeIdiomatic { if (in == null) null else in.toString } - InnerClassEntry(jname, oname, iname, access) + InnerClassEntry(jname, oname, iname, flags) } // -------------------------------------------- |