diff options
author | Eugene Vigdorchik <eugenevigdorchik@epfl.ch> | 2010-11-08 13:33:12 +0000 |
---|---|---|
committer | Eugene Vigdorchik <eugenevigdorchik@epfl.ch> | 2010-11-08 13:33:12 +0000 |
commit | 7f8ccd778d34016e6fb63b218524783da3916573 (patch) | |
tree | 62d464130c029a75bf58cc82cb603c663ddc63e5 | |
parent | b10ba655d5a3c127ffc4332ebb1e7198da3f9294 (diff) | |
download | scala-7f8ccd778d34016e6fb63b218524783da3916573.tar.gz scala-7f8ccd778d34016e6fb63b218524783da3916573.tar.bz2 scala-7f8ccd778d34016e6fb63b218524783da3916573.zip |
Proper fix for adaptToNewRun for toplevel class...
Proper fix for adaptToNewRun for toplevel classes; if the compiler is
running after flatten, then nothing to adapt
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 11f1385baa..6a91286c73 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -3789,12 +3789,14 @@ A type's typeSymbol should never be inspected directly. object adaptToNewRunMap extends TypeMap { private def adaptToNewRun(pre: Type, sym: Symbol): Symbol = { - if (sym.isModuleClass && !phase.flatClasses) { + if (phase.flatClasses) { + sym + } else if (sym.isModuleClass) { if (!sym.owner.isPackageClass) sym // Nested lazy object else adaptToNewRun(pre, sym.sourceModule).moduleClass - } else if ((pre eq NoPrefix) || (pre eq NoType) || sym.owner.isPackageClass) { + } else if ((pre eq NoPrefix) || (pre eq NoType) || sym.isPackageClass) { sym } else { var rebind0 = pre.findMember(sym.name, BRIDGE, 0, true) @@ -3833,7 +3835,7 @@ A type's typeSymbol should never be inspected directly. } } def apply(tp: Type): Type = tp match { - case ThisType(sym)/* if (sym.isModuleClass)*/ => + case ThisType(sym) => val sym1 = adaptToNewRun(sym.owner.thisType, sym) if (sym1 == sym) tp else ThisType(sym1) case SingleType(pre, sym) => |