diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/BCodeSkelBuilder.scala | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeSkelBuilder.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeSkelBuilder.scala index 481f71cb5d..dbad37cd5b 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeSkelBuilder.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeSkelBuilder.scala @@ -181,8 +181,15 @@ abstract class BCodeSkelBuilder extends BCodeHelpers { * can-multi-thread */ private def addModuleInstanceField() { + // TODO confirm whether we really don't want ACC_SYNTHETIC nor ACC_DEPRECATED + // SD-194 This can't be FINAL on JVM 1.9+ because we assign it from within the + // instance constructor, not from <clinit> directly. Assignment from <clinit>, + // after the constructor has completely finished, seems like the principled + // thing to do, but it would change behaviour when "benign" cyclic references + // between modules exist. + val mods = GenBCode.PublicStatic val fv = - cnode.visitField(GenBCode.PublicStaticFinal, // TODO confirm whether we really don't want ACC_SYNTHETIC nor ACC_DEPRECATED + cnode.visitField(mods, strMODULE_INSTANCE_FIELD, thisBType.descriptor, null, // no java-generic-signature |