diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-06-18 16:02:22 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-06-18 16:02:22 +0000 |
commit | 9e52f5beda632d12e439997d4a7d3a5a36e4ea9a (patch) | |
tree | 5be75aa90efc16dd1aa2489c6cad705e8a90f057 /src | |
parent | e6c140fecd361fdec9ad1d3c1579b8bbd3e9f007 (diff) | |
download | scala-9e52f5beda632d12e439997d4a7d3a5a36e4ea9a.tar.gz scala-9e52f5beda632d12e439997d4a7d3a5a36e4ea9a.tar.bz2 scala-9e52f5beda632d12e439997d4a7d3a5a36e4ea9a.zip |
Fixed symbol loaders when called at a very late...
Fixed symbol loaders when called at a very late phase (for example, when
inner classes are lifted).
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | 4 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index 56e3dc2d5d..d05cae979b 100644 --- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -990,8 +990,8 @@ abstract class ClassfileParser { case Some(entry) => val sym = classSymbol(entry.outerName) if (static) { - val s = sym.linkedModuleOfClass.info.member(innerName.toTypeName) - assert(s ne NoSymbol, sym) + val s = atPhase(currentRun.flattenPhase.prev)(sym.linkedModuleOfClass.info.member(innerName.toTypeName)) + assert(s ne NoSymbol, sym + "." + innerName + " linkedModule: " + sym.linkedModuleOfClass + sym.linkedModuleOfClass.info.members) s } else sym.info.member(innerName.toTypeName) diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala index f5aa4ed41b..dbdb4e1ad7 100644 --- a/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala +++ b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala @@ -812,8 +812,11 @@ abstract class UnPickler { override def complete(sym: Symbol) { super.complete(sym) var alias = at(j, readSymbol) - if (alias hasFlag OVERLOADED) - alias = alias suchThat (alt => sym.tpe =:= sym.owner.thisType.memberType(alt)) + if (alias hasFlag OVERLOADED) { + atPhase(currentRun.picklerPhase) { + alias = alias suchThat (alt => sym.tpe =:= sym.owner.thisType.memberType(alt)) + } + } sym.asInstanceOf[TermSymbol].setAlias(alias) } } |