diff options
author | Martin Odersky <odersky@gmail.com> | 2013-03-21 21:30:30 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-03-21 21:30:30 +0100 |
commit | 5b4f154c9e4c2c6ff48ac68b8d984e306853328f (patch) | |
tree | b79b81c86c31a7b6b6b34801dc81346413e5a699 /src/dotty/tools/dotc/core/SymbolLoaders.scala | |
parent | 5ac2104e688409e24785cfe62cdc7e8ef0bc6428 (diff) | |
download | dotty-5b4f154c9e4c2c6ff48ac68b8d984e306853328f.tar.gz dotty-5b4f154c9e4c2c6ff48ac68b8d984e306853328f.tar.bz2 dotty-5b4f154c9e4c2c6ff48ac68b8d984e306853328f.zip |
More fixes to classfile reading.
Can now read all classes in scala.collection.generic. Some failures remain for their companion objects.
Diffstat (limited to 'src/dotty/tools/dotc/core/SymbolLoaders.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/SymbolLoaders.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/SymbolLoaders.scala b/src/dotty/tools/dotc/core/SymbolLoaders.scala index b71b0c660..fa62d29e3 100644 --- a/src/dotty/tools/dotc/core/SymbolLoaders.scala +++ b/src/dotty/tools/dotc/core/SymbolLoaders.scala @@ -15,6 +15,13 @@ import StdNames._ import Decorators.StringDecorator import pickling.ClassfileParser +object SymbolLoaders { + /** A marker trait for a completer that replaces the original + * Symbol loader for an unpickled root. + */ + trait SecondCompleter +} + /** A base class for Symbol loaders with some overridable behavior */ class SymbolLoaders { @@ -225,7 +232,9 @@ trait SymbolLoader extends LazyType { throw ex } finally { def postProcess(denot: SymDenotation) = - if ((denot is Touched) && !denot.isCompleted) denot.markAbsent() + if (!denot.isCompleted && + !denot.completer.isInstanceOf[SymbolLoaders.SecondCompleter]) + denot.markAbsent() postProcess(root) if (!root.isRoot) postProcess(root.linkedClass.denot) |