From 1971b706683427606eac866097c1684692650ecf Mon Sep 17 00:00:00 2001 From: Mirco Dotta <mirco.dotta@gmail.com> Date: Mon, 6 Jul 2009 15:03:04 +0000 Subject: [PATCH] Updated strategy for collecting annotated @generator class and methods. Refer to the funcheck wiki for an exhaustive explanation of this. --- .../scalacheck/FilterGeneratorAnnotations.scala | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/funcheck/scalacheck/FilterGeneratorAnnotations.scala b/src/funcheck/scalacheck/FilterGeneratorAnnotations.scala index 65498dee1..be3aaae44 100644 --- a/src/funcheck/scalacheck/FilterGeneratorAnnotations.scala +++ b/src/funcheck/scalacheck/FilterGeneratorAnnotations.scala @@ -37,7 +37,9 @@ trait FilterGeneratorAnnotations { def filterTreesWithGeneratorAnnotation(Unit: CompilationUnit)(tree: Tree): Boolean = { lazy val sym = tree.symbol tree match { - case cd: ClassDef => sym.hasAttribute(generator) || abstractSuperClassHasGeneratorAnnotation(sym.superClass) + case cd: ClassDef => isAbstractClass(sym) || + sym.hasAttribute(generator) || + abstractSuperClassHasGeneratorAnnotation(sym.superClass) case d: DefDef => sym.hasAttribute(generator) case _ => false } @@ -51,13 +53,17 @@ trait FilterGeneratorAnnotations { superclass match { case NoSymbol => false case cs: ClassSymbol => - (cs.hasFlag(scala.tools.nsc.symtab.Flags.ABSTRACT) && - cs.hasAttribute(generator)) || + (isAbstractClass(cs) && cs.hasAttribute(generator)) || abstractSuperClassHasGeneratorAnnotation(cs.superClass) case _ => assert(false, "expected ClassSymbol, found "+superclass) false } - } -} + + private def isAbstractClass(s: Symbol): Boolean = s match { + case cs: ClassSymbol => cs.hasFlag(scala.tools.nsc.symtab.Flags.ABSTRACT) + case _ => false + } + +} \ No newline at end of file -- GitLab