summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-03-03 11:26:13 +0100
committerEugene Burmako <xeno.by@gmail.com>2014-03-03 11:26:13 +0100
commitcb80ac4a05eadc7b959eeecfa4e4262b9223c05a (patch)
tree3f30e6796364b731472209d94c79da68c3492e4d
parent24ff7d7f7930ee9917465a9fe762f891251a58f6 (diff)
parentc05153d907b52037cd638fd9a4d30f3e885520c9 (diff)
downloadscala-cb80ac4a05eadc7b959eeecfa4e4262b9223c05a.tar.gz
scala-cb80ac4a05eadc7b959eeecfa4e4262b9223c05a.tar.bz2
scala-cb80ac4a05eadc7b959eeecfa4e4262b9223c05a.zip
Merge pull request #3592 from densh/si/8281
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 af17ae9ac0..b68022afd9 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" }
}