summaryrefslogtreecommitdiff
path: root/test/files/scalacheck/quasiquotes/TypecheckedProps.scala
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-12-04 17:52:37 +0100
committerDen Shabalin <den.shabalin@gmail.com>2013-12-10 16:02:45 +0100
commite6eed418eefe3122b15c8e64b8697c5770a74960 (patch)
tree2161f619ccb44fda37697d297ebe52b78028adad /test/files/scalacheck/quasiquotes/TypecheckedProps.scala
parent1188f95acf71486c4a75b9ad428a92e6e401f5cd (diff)
downloadscala-e6eed418eefe3122b15c8e64b8697c5770a74960.tar.gz
scala-e6eed418eefe3122b15c8e64b8697c5770a74960.tar.bz2
scala-e6eed418eefe3122b15c8e64b8697c5770a74960.zip
SI-7789 make quasiquotes deconstruct UnApply trees
Diffstat (limited to 'test/files/scalacheck/quasiquotes/TypecheckedProps.scala')
-rw-r--r--test/files/scalacheck/quasiquotes/TypecheckedProps.scala25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/files/scalacheck/quasiquotes/TypecheckedProps.scala b/test/files/scalacheck/quasiquotes/TypecheckedProps.scala
index f443330e0b..2f501435e3 100644
--- a/test/files/scalacheck/quasiquotes/TypecheckedProps.scala
+++ b/test/files/scalacheck/quasiquotes/TypecheckedProps.scala
@@ -50,4 +50,29 @@ object TypecheckedProps extends QuasiquoteProperties("typechecked") {
assert(enums1 ≈ enums)
assert(body1 ≈ body)
}
+
+ property("extract UnApply (1)") = test {
+ val q"object $_ { $_; $_; $m }" = typecheck(q"""
+ object Test {
+ class Cell(val x: Int)
+ object Cell { def unapply(c: Cell) = Some(c.x) }
+ new Cell(0) match { case Cell(v) => v }
+ }
+ """)
+ val q"$_ match { case $f(..$args) => $_ }" = m
+ assert(f ≈ pq"Test.this.Cell")
+ assert(args ≈ List(pq"v"))
+ }
+
+ property("extract UnApply (2)") = test {
+ val q"object $_ { $_; $_; $m }" = typecheck(q"""
+ object Test {
+ case class Cell(val x: Int)
+ new Cell(0) match { case Cell(v) => v }
+ }
+ """)
+ val q"$_ match { case ${f: TypeTree}(..$args) => $_ }" = m
+ assert(f.original ≈ pq"Test.this.Cell")
+ assert(args ≈ List(pq"v"))
+ }
} \ No newline at end of file