From 33b377cfda11ec989ad55aa0dfde6cd0a98b7a35 Mon Sep 17 00:00:00 2001 From: Philippe Suter <philippe.suter@gmail.com> Date: Tue, 9 Jun 2009 14:28:48 +0000 Subject: [PATCH] amazingly enough I can now tell an object from a class. --- src/funcheck/AnalysisComponent.scala | 7 ++++--- src/funcheck/CodeExtraction.scala | 9 ++++++--- src/funcheck/Extractors.scala | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/funcheck/AnalysisComponent.scala b/src/funcheck/AnalysisComponent.scala index ff3710880..496fcdb3f 100644 --- a/src/funcheck/AnalysisComponent.scala +++ b/src/funcheck/AnalysisComponent.scala @@ -25,9 +25,10 @@ class AnalysisComponent(val global: Global, val pluginInstance: FunCheckPlugin) def apply(unit: CompilationUnit): Unit = { // (new ForeachTreeTraverser(firstFilter(unit))).traverse(unit.body) // stopIfErrors - (new ForeachTreeTraverser(findContracts)).traverse(unit.body) - stopIfErrors - (new ForeachTreeTraverser(mircoTraverser(unit))).traverse(unit.body) + // (new ForeachTreeTraverser(findContracts)).traverse(unit.body) + // stopIfErrors + (new ForeachTreeTraverser(showObjects)).traverse(unit.body) + // (new ForeachTreeTraverser(mircoTraverser(unit))).traverse(unit.body) if(pluginInstance.stopAfterAnalysis) { println("Analysis complete. Now terminating the compiler process.") diff --git a/src/funcheck/CodeExtraction.scala b/src/funcheck/CodeExtraction.scala index 256132b29..65e2219ba 100644 --- a/src/funcheck/CodeExtraction.scala +++ b/src/funcheck/CodeExtraction.scala @@ -4,9 +4,7 @@ import scala.tools.nsc._ import scala.tools.nsc.plugins._ trait CodeExtraction { - self: Extractors => - - val global: Global + self: AnalysisComponent => import global._ import StructuralExtractors._ @@ -35,4 +33,9 @@ trait CodeExtraction { case _ => ; } + + def showObjects(tree: Tree): Unit = tree match { + case ObjectDefn(name) => println(name + " appears to be an object.") + case _ => ; + } } diff --git a/src/funcheck/Extractors.scala b/src/funcheck/Extractors.scala index 944629556..697a44716 100644 --- a/src/funcheck/Extractors.scala +++ b/src/funcheck/Extractors.scala @@ -48,6 +48,21 @@ trait Extractors { case _ => None } } + + object ObjectDefn { + def unapply(tree: Tree): Option[String] = tree match { + case c @ ClassDef(_, name, tparams, impl) => { + println(name.toString + " is being traversed.") + println(c.symbol) + if(c.symbol.hasFlag(symtab.Flags.MODULE)) { + Some(name.toString) + } else { + None + } + } + case _ => None + } + } } object ExpressionExtractors { -- GitLab