summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Shabalin <denys.shabalin@typesafe.com>2014-02-24 15:27:37 +0100
committerDenys Shabalin <denys.shabalin@typesafe.com>2014-02-28 11:27:43 +0100
commitc05153d907b52037cd638fd9a4d30f3e885520c9 (patch)
tree17a42a26b93a112236b3be7158651f75529a7015
parent13e7b8112fb412bb3ed29716409087aed0f2a7e4 (diff)
downloadscala-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.scala3
-rw-r--r--test/files/scalacheck/quasiquotes/ErrorProps.scala12
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" }
}