From ec061b1605db323bcb57a97ab26d78f0e565955f Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 27 Jun 2005 16:22:32 +0000 Subject: *** empty log message *** --- sources/scala/tools/nsc/Global.scala | 6 +++++- sources/scala/tools/nsc/symtab/Symbols.scala | 9 +++++++-- sources/scala/tools/nsc/transform/Transform.scala | 3 ++- sources/scala/tools/nsc/typechecker/Typers.scala | 2 ++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sources/scala/tools/nsc/Global.scala b/sources/scala/tools/nsc/Global.scala index e683b63be9..d686ca3493 100755 --- a/sources/scala/tools/nsc/Global.scala +++ b/sources/scala/tools/nsc/Global.scala @@ -136,6 +136,7 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable } val parserPhase = new syntaxAnalyzer.ParserPhase(NoPhase); val firstPhase = parserPhase; + phase = parserPhase; definitions.init; // needs firstPhase to be defined, that's why it is placed here. @@ -244,7 +245,10 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable informTime(globalPhase.description, startTime); } globalPhase = if (settings.stop contains globalPhase.name) terminalPhase else globalPhase.next; - if (settings.check contains globalPhase.name) { phase = globalPhase; checker.checkTrees; } + if (settings.check contains globalPhase.name) { + phase = globalPhase; + checker.checkTrees; + } } if (settings.Xshowcls.value != "") showDef(newTermName(settings.Xshowcls.value), false); if (settings.Xshowobj.value != "") showDef(newTermName(settings.Xshowobj.value), true); diff --git a/sources/scala/tools/nsc/symtab/Symbols.scala b/sources/scala/tools/nsc/symtab/Symbols.scala index 1c7a3cf3a9..d8a8182c07 100755 --- a/sources/scala/tools/nsc/symtab/Symbols.scala +++ b/sources/scala/tools/nsc/symtab/Symbols.scala @@ -232,8 +232,13 @@ abstract class Symbols: SymbolTable { /** Set initial info. */ def setInfo(info: Type): this.type = { - infos = new TypeHistory(phase, info, null); - limit = phase; + if (limit == NoPhase) { + assert(phase != NoPhase); + infos = new TypeHistory(phase, info, null); + limit = phase; + } else { + infos = new TypeHistory(infos.start, info, null); + } assert(info != null); rawflags = if (info.isComplete) rawflags | INITIALIZED & ~LOCKED; else rawflags & ~INITIALIZED & ~LOCKED; diff --git a/sources/scala/tools/nsc/transform/Transform.scala b/sources/scala/tools/nsc/transform/Transform.scala index bac2825028..cedc32118c 100644 --- a/sources/scala/tools/nsc/transform/Transform.scala +++ b/sources/scala/tools/nsc/transform/Transform.scala @@ -15,8 +15,9 @@ abstract class Transform extends SubComponent { class Phase(prev: scala.tools.nsc.Phase) extends global.StdPhase(prev) { def name: String = phaseName; - def apply(unit: global.CompilationUnit): unit = + def apply(unit: global.CompilationUnit): unit = { unit.body = newTransformer(unit).transform(unit.body); + } } } diff --git a/sources/scala/tools/nsc/typechecker/Typers.scala b/sources/scala/tools/nsc/typechecker/Typers.scala index 0e91a856cd..f8bb0a40bb 100755 --- a/sources/scala/tools/nsc/typechecker/Typers.scala +++ b/sources/scala/tools/nsc/typechecker/Typers.scala @@ -782,6 +782,8 @@ abstract class Typers: Analyzer { } case ErrorType => setError(tree) + case _ => + throw new Error("Matcherror at " + phase);//debug } /** The qualifying class of a this or super with prefix `qual' */ -- cgit v1.2.3