summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorMiguel Garcia <miguelalfredo.garcia@epfl.ch>2013-06-27 21:12:21 +0200
committerMiguel Garcia <miguelalfredo.garcia@epfl.ch>2013-06-27 21:12:21 +0200
commit8281ab5c2950aa8ea0017fc4b0c40a7eafda2931 (patch)
treea8700b8c21bfa1f5159e3bcdc060d0947d2d1862 /src/compiler
parente8d1612de49418034cc319508b5f6bcb5a7367e6 (diff)
downloadscala-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
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/BCodeTypes.scala7
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)
}
// --------------------------------------------