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