diff options
author | Den Shabalin <den.shabalin@gmail.com> | 2013-10-19 20:10:09 +0200 |
---|---|---|
committer | Den Shabalin <den.shabalin@gmail.com> | 2013-10-19 20:44:10 +0200 |
commit | 6d4f43503f718610182d9529695d7aed02333e37 (patch) | |
tree | 13aec2d83cbaf4f5bc5d155a80c0c24a7011018e /test/files/scalacheck/quasiquotes/TermConstructionProps.scala | |
parent | 8848f241616627b0c5beca38a5107c4eca3e10fd (diff) | |
download | scala-6d4f43503f718610182d9529695d7aed02333e37.tar.gz scala-6d4f43503f718610182d9529695d7aed02333e37.tar.bz2 scala-6d4f43503f718610182d9529695d7aed02333e37.zip |
SI-6840 fixes weird typing of quasiquote arguments
Previously quasiquote arguments were type checked against Any
which caused weird inference that made splicing of complex expressions
unusable:
val l1 = List(q"foo")
val l2 = List(q"bar")
q"f(..${l1 ++ l2})" // argument type checked as Any instead of List[Tree]
This is fixed by forcing compiler to type check against type
variable which itself isn't used in any other way.
Diffstat (limited to 'test/files/scalacheck/quasiquotes/TermConstructionProps.scala')
-rw-r--r-- | test/files/scalacheck/quasiquotes/TermConstructionProps.scala | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/test/files/scalacheck/quasiquotes/TermConstructionProps.scala b/test/files/scalacheck/quasiquotes/TermConstructionProps.scala index 9284903623..f68656d0f7 100644 --- a/test/files/scalacheck/quasiquotes/TermConstructionProps.scala +++ b/test/files/scalacheck/quasiquotes/TermConstructionProps.scala @@ -199,4 +199,13 @@ object TermConstructionProps extends QuasiquoteProperties("term construction") { def withEvidence = q"def foo[T: X]" assert(!(withEvidence ≈ withEvidence)) } + + property("make sure inference doesn't infer any") = test { + val l1 = List(q"foo") + val l2 = List(q"bar") + val baz = q"baz" + assert(q"f(..${l1 ++ l2})" ≈ q"f(foo, bar)") + assert(q"f(..${l1 ++ l2}, $baz)" ≈ q"f(foo, bar, baz)") + assert(q"f(${if (true) q"a" else q"b"})" ≈ q"f(a)") + } } |