From 075d700b0d2ad1ce5002546635f078e0c34d8d97 Mon Sep 17 00:00:00 2001 From: Philippe Suter <philippe.suter@gmail.com> Date: Thu, 11 Jun 2009 17:15:07 +0000 Subject: [PATCH] --- src/funcheck/CodeExtraction.scala | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/funcheck/CodeExtraction.scala b/src/funcheck/CodeExtraction.scala index 432e2d08d..1563e5251 100644 --- a/src/funcheck/CodeExtraction.scala +++ b/src/funcheck/CodeExtraction.scala @@ -16,8 +16,16 @@ trait CodeExtraction extends Extractors { import ExpressionExtractors._ def extractCode(unit: CompilationUnit): Program = { + def s2ps(tree: Tree): Expr = toPureScala(unit)(tree) match { + case Some(ex) => ex + case None => stopIfErrors; throw new Error("unreachable") + } + def trav(tree: Tree): Unit = tree match { - case d @ DefDef(mods, name, tparams, vparamss, tpt, body) if !d.symbol.isConstructor => { + case t : Tree if t.symbol != null && t.symbol.hasFlag(symtab.Flags.SYNTHETIC) => { + println("Synth! " + t) + } + case d @ DefDef(mods, name, tparams, vparamss, tpt, body) if !(d.symbol.hasFlag(symtab.Flags.SYNTHETIC) || d.symbol.isConstructor) => { println("In: " + name) println(d.symbol) println(d.mods) @@ -30,8 +38,15 @@ trait CodeExtraction extends Extractors { case _ => ; } - // (new ForeachTreeTraverser(trav)).traverse(unit.body) + // Finds all vals in a template + + // Finds all defs in a template + + // Finds all class definitions in a template + + // Finds all assertions in a template + // Extraction of the program. val program = unit.body match { case p @ PackageDef(name, lst) if lst.size == 0 => { unit.error(p.pos, "No top-level definition found.") @@ -53,6 +68,7 @@ trait CodeExtraction extends Extractors { } } + (new ForeachTreeTraverser(trav)).traverse(unit.body) stopIfErrors program.get -- GitLab