aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/SymbolLoaders.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-03-21 21:30:30 +0100
committerMartin Odersky <odersky@gmail.com>2013-03-21 21:30:30 +0100
commit5b4f154c9e4c2c6ff48ac68b8d984e306853328f (patch)
treeb79b81c86c31a7b6b6b34801dc81346413e5a699 /src/dotty/tools/dotc/core/SymbolLoaders.scala
parent5ac2104e688409e24785cfe62cdc7e8ef0bc6428 (diff)
downloaddotty-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.scala11
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)