summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-12-02 14:59:53 +0100
committerDen Shabalin <den.shabalin@gmail.com>2013-12-10 16:02:02 +0100
commit207b945353bd49f4357ebb9921280591b309db3f (patch)
tree6b23a4daf67c85af61a3114b55e9ed3c72dee44d /src
parent8bde124040f3e053d6312702f2cd722ac92fc132 (diff)
downloadscala-207b945353bd49f4357ebb9921280591b309db3f.tar.gz
scala-207b945353bd49f4357ebb9921280591b309db3f.tar.bz2
scala-207b945353bd49f4357ebb9921280591b309db3f.zip
SI-8016 Ensure that q”..$xs” is equivalent to q”{..$xs}”
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala7
-rw-r--r--src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala4
2 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala b/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala
index 126c14ac81..6e6b617e5c 100644
--- a/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala
+++ b/src/compiler/scala/tools/reflect/quasiquotes/Parsers.scala
@@ -161,7 +161,12 @@ trait Parsers { self: Quasiquotes =>
}
object TermParser extends Parser {
- def entryPoint = { parser => gen.mkTreeOrBlock(parser.templateOrTopStatSeq()) }
+ def entryPoint = { parser =>
+ parser.templateOrTopStatSeq() match {
+ case head :: Nil => Block(Nil, head)
+ case lst => gen.mkTreeOrBlock(lst)
+ }
+ }
}
object TypeParser extends Parser {
diff --git a/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala b/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala
index 6922ec1bb4..e72651b6df 100644
--- a/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala
+++ b/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala
@@ -167,6 +167,10 @@ trait Reifiers { self: Quasiquotes =>
reifyBuildCall(nme.SyntacticTypeApplied, fun, targs)
case SyntacticFunction(args, body) =>
reifyBuildCall(nme.SyntacticFunction, args, body)
+ case Block(Nil, Placeholder(tree, _, DotDot)) =>
+ mirrorBuildCall(nme.SyntacticBlock, tree)
+ case Block(Nil, other) =>
+ reifyTree(other)
case Block(stats, last) =>
reifyBuildCall(nme.SyntacticBlock, stats :+ last)
// parser emits trees with scala package symbol to ensure