From f47870da6db82686d28a6f44bbb4fdcaac5369df Mon Sep 17 00:00:00 2001 From: Miguel Garcia Date: Thu, 7 Jun 2012 20:25:06 +0200 Subject: counterpart in GenASM to 241c7606d0bf5f3209b9d549fb75 --- src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala index b8cf4eca9f..4b903cf556 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala @@ -283,12 +283,16 @@ abstract class GenASM extends SubComponent with BytecodeWriters { && !sym.isMutable // lazy vals and vars both ) + // Primitives are "abstract final" to prohibit instantiation + // without having to provide any implementations, but that is an + // illegal combination of modifiers at the bytecode level so + // suppress final if abstract if present. import asm.Opcodes._ mkFlags( if (privateFlag) ACC_PRIVATE else ACC_PUBLIC, if (sym.isDeferred || sym.hasAbstractFlag) ACC_ABSTRACT else 0, if (sym.isInterface) ACC_INTERFACE else 0, - if (finalFlag) ACC_FINAL else 0, + if (finalFlag && !sym.hasAbstractFlag) ACC_FINAL else 0, if (sym.isStaticMember) ACC_STATIC else 0, if (sym.isBridge) ACC_BRIDGE | ACC_SYNTHETIC else 0, if (sym.isClass && !sym.isInterface) ACC_SUPER else 0, -- cgit v1.2.3