From c3e766e0b255f8fc202d027406c7efd76c82b49d Mon Sep 17 00:00:00 2001 From: Den Shabalin Date: Thu, 31 Oct 2013 11:58:15 +0100 Subject: make fresh names compare similar in quasiquotes Otherwise it's annoying that trees that look the same are not equal due to some fresh name hidden underneath. Due to this one test needs to be changed to use plain equalsStructure. --- .../quasiquotes/QuasiquoteProperties.scala | 24 +++++++++++++++++++++- .../quasiquotes/TermConstructionProps.scala | 6 +++--- 2 files changed, 26 insertions(+), 4 deletions(-) (limited to 'test/files') diff --git a/test/files/scalacheck/quasiquotes/QuasiquoteProperties.scala b/test/files/scalacheck/quasiquotes/QuasiquoteProperties.scala index 6d3a993d1f..b2bce124ee 100644 --- a/test/files/scalacheck/quasiquotes/QuasiquoteProperties.scala +++ b/test/files/scalacheck/quasiquotes/QuasiquoteProperties.scala @@ -16,8 +16,30 @@ trait Helpers { Result(Prop.Proof) } + object simplify extends Transformer { + object SimplifiedName { + def unapply[T <: Name](name: T): Option[T] = + name.toString.split("\\$").toSeq match { + case first :+ last if scala.util.Try(last.toInt).isSuccess && first.nonEmpty => + val value = first.mkString("", "$", "$") + Some((if (name.isTermName) TermName(value) else TypeName(value)).asInstanceOf[T]) + case _ => None + } + } + + override def transform(tree: Tree): Tree = tree match { + case Ident(SimplifiedName(name)) => Ident(name) + case ValDef(mods, SimplifiedName(name), tpt, rhs) => ValDef(mods, name, tpt, rhs) + case Bind(SimplifiedName(name), rhs) => Bind(name, rhs) + case _ => + super.transform(tree) + } + + def apply(tree: Tree): Tree = transform(tree) + } + implicit class TestSimilarTree(tree1: Tree) { - def ≈(tree2: Tree) = tree1.equalsStructure(tree2) + def ≈(tree2: Tree) = simplify(tree1).equalsStructure(simplify(tree2)) } implicit class TestSimilarListTree(lst: List[Tree]) { diff --git a/test/files/scalacheck/quasiquotes/TermConstructionProps.scala b/test/files/scalacheck/quasiquotes/TermConstructionProps.scala index 17edeaa932..cdd96205de 100644 --- a/test/files/scalacheck/quasiquotes/TermConstructionProps.scala +++ b/test/files/scalacheck/quasiquotes/TermConstructionProps.scala @@ -188,11 +188,11 @@ object TermConstructionProps extends QuasiquoteProperties("term construction") { property("fresh names are regenerated at each evaluation") = test { def plusOne = q"{ _ + 1 }" - assert(!(plusOne ≈ plusOne)) + assert(!plusOne.equalsStructure(plusOne)) def whileTrue = q"while(true) false" - assert(!(whileTrue ≈ whileTrue)) + assert(!whileTrue.equalsStructure(whileTrue)) def withEvidence = q"def foo[T: X]" - assert(!(withEvidence ≈ withEvidence)) + assert(!withEvidence.equalsStructure(withEvidence)) } property("make sure inference doesn't infer any") = test { -- cgit v1.2.3