summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/Global.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2005-09-06 16:21:29 +0000
committerIulian Dragos <jaguarul@gmail.com>2005-09-06 16:21:29 +0000
commit0d4dfff1a00da58b25b01a54e959bc231456a059 (patch)
tree26c4c8525aa637954b29ff9109c421baa2f97309 /sources/scala/tools/nsc/Global.scala
parent7fa7c9317aac5bc9c40e47ef19cf13b6d84ad671 (diff)
downloadscala-0d4dfff1a00da58b25b01a54e959bc231456a059.tar.gz
scala-0d4dfff1a00da58b25b01a54e959bc231456a059.tar.bz2
scala-0d4dfff1a00da58b25b01a54e959bc231456a059.zip
Added tree checkers.
Diffstat (limited to 'sources/scala/tools/nsc/Global.scala')
-rwxr-xr-xsources/scala/tools/nsc/Global.scala28
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 = {