diff options
author | Martin Odersky <odersky@gmail.com> | 2014-03-29 15:05:07 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-03-31 14:52:08 +0200 |
commit | fc4648d33a051ff5d220c2fea097fc99b5883ecc (patch) | |
tree | 90306579eb4bcb1862e7e642ce68ca40471b00b8 /src/dotty/tools/dotc/transform/TreeChecker.scala | |
parent | 26b8ec48adec709cf2b07b470ada774c708e96a4 (diff) | |
download | dotty-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.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 |