summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-10-31 11:58:15 +0100
committerDen Shabalin <den.shabalin@gmail.com>2013-11-12 14:04:42 +0100
commitc3e766e0b255f8fc202d027406c7efd76c82b49d (patch)
tree2e40524ce04c8d7bd17062dd02e0d356bdbc83d2 /test/files
parentc6fe22f5479458a688a819f92f2af43c5867ea81 (diff)
downloadscala-c3e766e0b255f8fc202d027406c7efd76c82b49d.tar.gz
scala-c3e766e0b255f8fc202d027406c7efd76c82b49d.tar.bz2
scala-c3e766e0b255f8fc202d027406c7efd76c82b49d.zip
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.
Diffstat (limited to 'test/files')
-rw-r--r--test/files/scalacheck/quasiquotes/QuasiquoteProperties.scala24
-rw-r--r--test/files/scalacheck/quasiquotes/TermConstructionProps.scala6
2 files changed, 26 insertions, 4 deletions
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 {