diff options
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) |