diff options
author | VladimirNik <vladimir.nikolaev9@gmail.com> | 2014-02-18 23:36:42 +0400 |
---|---|---|
committer | VladimirNik <vladimir.nikolaev9@gmail.com> | 2014-02-20 01:23:26 +0400 |
commit | 0f2ce9254b63eda76de218d1236318b697e6d4f7 (patch) | |
tree | cdd6dca7a37e6d3a79daa7a36a97c122665250f2 /test/files/scalacheck | |
parent | 74b5c928795f0702772e5a33c82a7c72b86a8c9b (diff) | |
download | scala-0f2ce9254b63eda76de218d1236318b697e6d4f7.tar.gz scala-0f2ce9254b63eda76de218d1236318b697e6d4f7.tar.bz2 scala-0f2ce9254b63eda76de218d1236318b697e6d4f7.zip |
block wrapping for trees modified
Diffstat (limited to 'test/files/scalacheck')
-rw-r--r-- | test/files/scalacheck/quasiquotes/TypecheckedProps.scala | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/files/scalacheck/quasiquotes/TypecheckedProps.scala b/test/files/scalacheck/quasiquotes/TypecheckedProps.scala index b4b909e9be..432c0959c9 100644 --- a/test/files/scalacheck/quasiquotes/TypecheckedProps.scala +++ b/test/files/scalacheck/quasiquotes/TypecheckedProps.scala @@ -109,4 +109,47 @@ object TypecheckedProps extends QuasiquoteProperties("typechecked") { assert(p2.name == pName2) assert(params2.size == 2) } + + property("implicit class") = test { + val clName = TypeName("Test") + val paramName = TermName("x") + val q"{implicit class $name($param)}" = typecheck(q"implicit class $clName(val $paramName: String)") + + assert(name == clName) + assert(param.name == paramName) + } + + property("block with lazy") = test { + val lazyName = TermName("x") + val lazyRhsVal = 42 + val lazyRhs = Literal(Constant(lazyRhsVal)) + val q"{lazy val $pname = $rhs}" = typecheck(q"{lazy val $lazyName = $lazyRhsVal}") + + assert(pname == lazyName) + assert(rhs ≈ lazyRhs) + } + + property("class with lazy") = test { + val clName = TypeName("Test") + val paramName = TermName("x") + val q"class $name{lazy val $pname = $_}" = typecheck(q"class $clName {lazy val $paramName = 42}") + + assert(name == clName) + assert(pname == paramName) + } + + property("case class with object") = test { + val defName = TermName("z") + val defRhsVal = 42 + val defRhs = Literal(Constant(defRhsVal)) + val q"object $_{ $_; object $_ extends ..$_ {def $name = $rhs} }" = + typecheck(q""" + object Test{ + case class C(x: Int) { def y = x }; + object C { def $defName = $defRhsVal } + }""") + + assert(name == defName) + assert(rhs ≈ defRhs) + } } |