diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2005-09-06 16:21:29 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2005-09-06 16:21:29 +0000 |
commit | 0d4dfff1a00da58b25b01a54e959bc231456a059 (patch) | |
tree | 26c4c8525aa637954b29ff9109c421baa2f97309 /sources/scala/tools/nsc/Global.scala | |
parent | 7fa7c9317aac5bc9c40e47ef19cf13b6d84ad671 (diff) | |
download | scala-0d4dfff1a00da58b25b01a54e959bc231456a059.tar.gz scala-0d4dfff1a00da58b25b01a54e959bc231456a059.tar.bz2 scala-0d4dfff1a00da58b25b01a54e959bc231456a059.zip |
Added tree checkers.
Diffstat (limited to 'sources/scala/tools/nsc/Global.scala')
-rwxr-xr-x | sources/scala/tools/nsc/Global.scala | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/sources/scala/tools/nsc/Global.scala b/sources/scala/tools/nsc/Global.scala index d163b9eae3..5f817cf0cb 100755 --- a/sources/scala/tools/nsc/Global.scala +++ b/sources/scala/tools/nsc/Global.scala @@ -18,14 +18,15 @@ import ast.parser._; import typechecker._; import matching.TransMatcher; import transform._; -import backend.icode.{ICodes, GenICode}; +import backend.icode.{ICodes, GenICode, Checkers}; +import backend.ScalaPrimitives; class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable with Trees with CompilationUnits - with ICodes { +{ -// sub-components -------------------------------------------------- + // sub-components -------------------------------------------------- object treePrinters extends TreePrinters { val global: Global.this.type = Global.this @@ -53,6 +54,15 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable val global: Global.this.type = Global.this } + object icodes extends ICodes { + val global: Global.this.type = Global.this + } + + object checkers extends Checkers { + val global: Global.this.type = Global.this + } + val icodeChecker = new checkers.ICodeChecker(); + val copy = new LazyTreeCopier(); type AttrInfo = Pair[Type, List[Any]]; @@ -222,6 +232,10 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable val global: Global.this.type = Global.this; } + object scalaPrimitives extends ScalaPrimitives { + val global: Global.this.type = Global.this; + } + def phaseDescriptors: List[SubComponent] = List( analyzer.namerFactory, // needs to be first analyzer.typerFactory, // needs to be second @@ -321,9 +335,13 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable globalPhase = globalPhase.next; if (settings.check contains globalPhase.name) { phase = globalPhase; - checker.checkTrees; + if (globalPhase.name == "terminal") + icodeChecker.checkICodes; + else + checker.checkTrees; } } + if (settings.Xshowcls.value != "") showDef(newTermName(settings.Xshowcls.value), false); if (settings.Xshowobj.value != "") showDef(newTermName(settings.Xshowobj.value), true); if (settings.Xshowicode.value) printICode(); @@ -424,7 +442,7 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable private def printICode(): Unit = { val printer = new icodePrinter.TextPrinter(new PrintWriter(System.out, true)); - classes.foreach(printer.printClass); + icodes.classes.foreach(printer.printClass); } private def informStatistics = { |