aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/TreeChecker.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-03-29 15:05:07 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-03-31 14:52:08 +0200
commitfc4648d33a051ff5d220c2fea097fc99b5883ecc (patch)
tree90306579eb4bcb1862e7e642ce68ca40471b00b8 /src/dotty/tools/dotc/transform/TreeChecker.scala
parent26b8ec48adec709cf2b07b470ada774c708e96a4 (diff)
downloaddotty-fc4648d33a051ff5d220c2fea097fc99b5883ecc.tar.gz
dotty-fc4648d33a051ff5d220c2fea097fc99b5883ecc.tar.bz2
dotty-fc4648d33a051ff5d220c2fea097fc99b5883ecc.zip
Add -Ycheck capability
Right now uses a super-rudementary tree checker: we only check that every tree has a type.
Diffstat (limited to 'src/dotty/tools/dotc/transform/TreeChecker.scala')
-rw-r--r--src/dotty/tools/dotc/transform/TreeChecker.scala37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala
new file mode 100644
index 000000000..ea3afc679
--- /dev/null
+++ b/src/dotty/tools/dotc/transform/TreeChecker.scala
@@ -0,0 +1,37 @@
+package dotty.tools.dotc
+package transform
+
+import TreeTransforms._
+import core.DenotTransformers._
+import core.Denotations._
+import core.SymDenotations._
+import core.Contexts._
+import core.Symbols._
+import core.Types._
+import core.Constants._
+import core.StdNames._
+import core.transform.Erasure.isUnboundedGeneric
+import typer.ErrorReporting._
+import ast.Trees._
+
+/** This transform eliminates patterns. Right now it's a dummy.
+ * Awaiting the real pattern matcher.
+ */
+class TreeChecker {
+ import ast.tpd._
+
+ def check(ctx: Context) = {
+ println(s"checking ${ctx.compilationUnit} after phase ${ctx.phase.prev}")
+ Checker.transform(ctx.compilationUnit.tpdTree)(ctx)
+ }
+
+ object Checker extends TreeMap {
+ override def transform(tree: Tree)(implicit ctx: Context) = {
+ println(i"checking $tree")
+ assert(tree.isEmpty || tree.hasType, tree.show)
+ super.transform(tree)
+ }
+ }
+}
+
+object TreeChecker extends TreeChecker \ No newline at end of file