diff options
author | Martin Odersky <odersky@gmail.com> | 2013-04-05 16:54:10 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-04-05 16:54:40 +0200 |
commit | 4ce196d8152f75163edb362fcd21fb37631b7fde (patch) | |
tree | b1bfe19ab22935474b0be5939d61e93c8e86719a /src/dotty/tools/dotc/core/pickling/UnPickler.scala | |
parent | 859840dd0662a12fbc1ba470438eca779b08ed89 (diff) | |
download | dotty-4ce196d8152f75163edb362fcd21fb37631b7fde.tar.gz dotty-4ce196d8152f75163edb362fcd21fb37631b7fde.tar.bz2 dotty-4ce196d8152f75163edb362fcd21fb37631b7fde.zip |
Made module class names end in '$'.
If module classes have the same names as their companion classes there is the latent trap that TypeRefs refer to one or the other. To avoid cross-talk, module classes need to have a different name.
Also, some fixes to baseType, isSubClass in SymDenotations.
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/UnPickler.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/pickling/UnPickler.scala | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala index c47b3b2d4..bed88e1dd 100644 --- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala +++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala @@ -412,9 +412,10 @@ class UnPickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClassRoot: // symbols that were pickled with Pickler.writeSymInfo val nameref = readNat() - val name = at(nameref, readName) + val name0 = at(nameref, readName) val owner = readSymbolRef() - val flags = unpickleScalaFlags(readLongNat(), name.isTypeName) + val flags = unpickleScalaFlags(readLongNat(), name0.isTypeName) + val name = name0.adjustIfModuleClass(flags) def isClassRoot = (name == classRoot.name) && (owner == classRoot.owner) && !(flags is ModuleClass) def isModuleClassRoot = (name == moduleClassRoot.name) && (owner == moduleClassRoot.owner) && (flags is Module) |