diff --git a/src/funcheck/AnalysisComponent.scala b/src/funcheck/AnalysisComponent.scala index 84eed0db062e084948b6a45beb6b3750869373d6..a442828b4925363a2155e5a1acfed524971894a9 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 0000000000000000000000000000000000000000..4147dad4f9ba5d7a1af5b9d7facca6c034953305 --- /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 516d814d561090400701bf614581f002e0ced780..9d4ed55c5347f0e4675230a4bc35bca7abc0b4c9 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 27e4df13f3751907e385bde1839531b8208140f1..5b7514efe42aa4de9ff869aed4183a33c6945996 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 =>