diff options
author | Denys Shabalin <denys.shabalin@typesafe.com> | 2014-02-24 15:27:37 +0100 |
---|---|---|
committer | Denys Shabalin <denys.shabalin@typesafe.com> | 2014-02-28 11:27:43 +0100 |
commit | c05153d907b52037cd638fd9a4d30f3e885520c9 (patch) | |
tree | 17a42a26b93a112236b3be7158651f75529a7015 | |
parent | 13e7b8112fb412bb3ed29716409087aed0f2a7e4 (diff) | |
download | scala-c05153d907b52037cd638fd9a4d30f3e885520c9.tar.gz scala-c05153d907b52037cd638fd9a4d30f3e885520c9.tar.bz2 scala-c05153d907b52037cd638fd9a4d30f3e885520c9.zip |
SI-8281 check for unbound placeholder parameters in quasiquote parser
-rw-r--r-- | src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala | 3 | ||||
-rw-r--r-- | test/files/scalacheck/quasiquotes/ErrorProps.scala | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala b/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala index 3b93a8933d..e687e81069 100644 --- a/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala +++ b/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala @@ -22,7 +22,8 @@ trait Parsers { self: Quasiquotes => def parse(code: String): Tree = { try { val file = new BatchSourceFile(nme.QUASIQUOTE_FILE, code) - new QuasiquoteParser(file).parseRule(entryPoint) + val parser = new QuasiquoteParser(file) + parser.checkNoEscapingPlaceholders { parser.parseRule(entryPoint) } } catch { case mi: MalformedInput => c.abort(correspondingPosition(mi.offset), mi.msg) } diff --git a/test/files/scalacheck/quasiquotes/ErrorProps.scala b/test/files/scalacheck/quasiquotes/ErrorProps.scala index d61119d98f..3d9b27de77 100644 --- a/test/files/scalacheck/quasiquotes/ErrorProps.scala +++ b/test/files/scalacheck/quasiquotes/ErrorProps.scala @@ -160,6 +160,18 @@ object ErrorProps extends QuasiquoteProperties("errors") { q"$n" """) + property("SI-8211: check unbound placeholder paremeters") = fails( + "unbound placeholder parameter", + """ + q"_" + """) + + property("SI-8211: check unbound wildcard types") = fails( + "unbound wildcard type", + """ + tq"_" + """) + // // Make sure a nice error is reported in this case // { import Flag._; val mods = NoMods; q"lazy $mods val x: Int" } } |