diff options
Diffstat (limited to 'src/dotty/tools/dotc/transform/TreeChecker.scala')
-rw-r--r-- | src/dotty/tools/dotc/transform/TreeChecker.scala | 37 |
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 |