From 66004060889deaebab0d156688712a88cbe8f9a0 Mon Sep 17 00:00:00 2001
From: Mirco Dotta <mirco.dotta@gmail.com>
Date: Fri, 3 Jul 2009 09:00:47 +0000
Subject: [PATCH] - [Refactoring] GeneratorDefDefInjector Transformer does not
 need type parameter - Added Skeleton for ForAllTransformer tree transformer

---
 src/funcheck/AnalysisComponent.scala             |  2 +-
 src/funcheck/scalacheck/ForAllTransformer.scala  | 16 ++++++++++++++++
 .../scalacheck/GeneratorDefDefInjector.scala     |  5 ++---
 .../scalacheck/ScalaCheckIntegrator.scala        |  2 +-
 4 files changed, 20 insertions(+), 5 deletions(-)
 create mode 100644 src/funcheck/scalacheck/ForAllTransformer.scala

diff --git a/src/funcheck/AnalysisComponent.scala b/src/funcheck/AnalysisComponent.scala
index 84eed0db0..a442828b4 100644
--- a/src/funcheck/AnalysisComponent.scala
+++ b/src/funcheck/AnalysisComponent.scala
@@ -46,7 +46,7 @@ class AnalysisComponent(val global: Global, val pluginInstance: FunCheckPlugin)
       // unmodified.
       val (genDef, arbDef) = createGeneratorDefDefs(unit)
     
-      transform(genDef ::: arbDef, unit)
+      injectGenDefDefs(genDef ::: arbDef, unit)
 
 //      if(pluginInstance.stopAfterAnalysis) {
 //        println("Analysis complete. Now terminating the compiler process.")
diff --git a/src/funcheck/scalacheck/ForAllTransformer.scala b/src/funcheck/scalacheck/ForAllTransformer.scala
new file mode 100644
index 000000000..4147dad4f
--- /dev/null
+++ b/src/funcheck/scalacheck/ForAllTransformer.scala
@@ -0,0 +1,16 @@
+package funcheck.scalacheck
+
+import scala.tools.nsc.transform.TypingTransformers
+
+trait ForAllTransformer extends TypingTransformers {
+  import global._
+  
+  def forAllTransform(unit: CompilationUnit): Unit =
+    unit.body = new ForAllTransformer(unit).transform(unit.body)
+    
+  class ForAllTransformer(unit: CompilationUnit) 
+    extends /*Code Injection*/ TypingTransformer(unit) 
+  { 
+    override def transform(tree: Tree): Tree = null
+  }
+}
diff --git a/src/funcheck/scalacheck/GeneratorDefDefInjector.scala b/src/funcheck/scalacheck/GeneratorDefDefInjector.scala
index 516d814d5..9d4ed55c5 100644
--- a/src/funcheck/scalacheck/GeneratorDefDefInjector.scala
+++ b/src/funcheck/scalacheck/GeneratorDefDefInjector.scala
@@ -1,12 +1,11 @@
 package funcheck.scalacheck
 
-import scala.tools.nsc.{Global, SubComponent}
 import scala.tools.nsc.transform.TypingTransformers
 
-trait GeneratorDefDefInjector[T <: SubComponent] extends TypingTransformers { self: T =>
+trait GeneratorDefDefInjector extends TypingTransformers { 
    import global._
   
-  def transform(injecting: List[DefDef], unit: CompilationUnit): Unit = 
+  def injectGenDefDefs(injecting: List[DefDef], unit: CompilationUnit): Unit = 
     unit.body = new GenDefDefTransformer(injecting, unit).transform(unit.body)
   
   class GenDefDefTransformer(injecting: List[DefDef], unit: CompilationUnit) 
diff --git a/src/funcheck/scalacheck/ScalaCheckIntegrator.scala b/src/funcheck/scalacheck/ScalaCheckIntegrator.scala
index 27e4df13f..5b7514efe 100644
--- a/src/funcheck/scalacheck/ScalaCheckIntegrator.scala
+++ b/src/funcheck/scalacheck/ScalaCheckIntegrator.scala
@@ -5,7 +5,7 @@ import funcheck.util.FreshNameCreator
 
 trait ScalaCheckIntegrator[T <: SubComponent] extends ScalaCheck[T] 
   with FilterGeneratorAnnotations[T]
-  with GeneratorDefDefInjector[T]
+  with GeneratorDefDefInjector
   with FreshNameCreator 
 {
   self: T =>
-- 
GitLab