diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-08-31 16:27:39 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-08-31 16:27:39 +0000 |
commit | 6758ca1bfe59a2b273c4e934d1bb34b736d090fa (patch) | |
tree | 843423ec3903837553a6bb55b9e9586bd80346e2 | |
parent | d227d486fdb94ef3bffcfe048a3069db3d9c14e1 (diff) | |
download | scala-6758ca1bfe59a2b273c4e934d1bb34b736d090fa.tar.gz scala-6758ca1bfe59a2b273c4e934d1bb34b736d090fa.tar.bz2 scala-6758ca1bfe59a2b273c4e934d1bb34b736d090fa.zip |
Fixed #1572.
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala | 13 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Erasure.scala | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala index b5fa98f91e..b08ee849e6 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala @@ -57,6 +57,13 @@ abstract class GenJVM extends SubComponent { } } + /** Return the suffix of a class name */ + def moduleSuffix(sym: Symbol) = + if (sym.hasFlag(Flags.MODULE) && !sym.isMethod && + !sym.isImplClass && !sym.hasFlag(Flags.JAVA)) "$" + else ""; + + var pickledBytes = 0 // statistics /** @@ -497,7 +504,7 @@ abstract class GenJVM extends SubComponent { for (innerSym <- innerClasses.toList.sort(_.name.length < _.name.length)) { var outerName = javaName(innerSym.rawowner) // remove the trailing '$' - if (outerName.endsWith("$")) + if (outerName.endsWith("$") && isTopLevelModule(clasz.symbol)) outerName = outerName.substring(0, outerName.length - 1) var flags = javaFlags(innerSym) if (innerSym.rawowner.hasFlag(Flags.MODULE)) @@ -1631,9 +1638,7 @@ abstract class GenJVM extends SubComponent { * </p> */ def javaName(sym: Symbol): String = { - val suffix = if (sym.hasFlag(Flags.MODULE) && !sym.isMethod && - !sym.isImplClass && - !sym.hasFlag(Flags.JAVA)) "$" else ""; + val suffix = moduleSuffix(sym) if (sym == definitions.NothingClass) return javaName(definitions.RuntimeNothingClass) diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index 6618480d58..9bffa01b71 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -189,7 +189,7 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer with ast. } } def classSig: String = - "L"+atPhase(currentRun.icodePhase)(sym.fullNameString).replace('.', '/') + "L"+atPhase(currentRun.icodePhase)(sym.fullNameString + global.genJVM.moduleSuffix(sym)).replace('.', '/') def classSigSuffix: String = "."+sym.name if (sym == ArrayClass) |