summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-03-10 11:04:07 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-03-10 11:04:07 -0700
commit7f07d44bcc97ba8435e8c77393554571c9a006ad (patch)
tree985ceffa39650867112d9d8b94924aa3058caadb /src
parent76e3758e46d633573e5d4a678a7cd9e9433804cc (diff)
parent14e77b9c5071ea54bf3ace709037a1779d2c82f9 (diff)
downloadscala-7f07d44bcc97ba8435e8c77393554571c9a006ad.tar.gz
scala-7f07d44bcc97ba8435e8c77393554571c9a006ad.tar.bz2
scala-7f07d44bcc97ba8435e8c77393554571c9a006ad.zip
Merge pull request #3611 from densh/si/8385
SI-8385 make sure $quasiquote$tuple gets reified properly
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/reflect/quasiquotes/Quasiquotes.scala2
-rw-r--r--src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/reflect/quasiquotes/Quasiquotes.scala b/src/compiler/scala/tools/reflect/quasiquotes/Quasiquotes.scala
index 396688c437..b33069181c 100644
--- a/src/compiler/scala/tools/reflect/quasiquotes/Quasiquotes.scala
+++ b/src/compiler/scala/tools/reflect/quasiquotes/Quasiquotes.scala
@@ -51,7 +51,7 @@ abstract class Quasiquotes extends Parsers
def sreified =
reified
.toString
- .replace("scala.reflect.runtime.`package`.universe.build.", "")
+ .replace("scala.reflect.runtime.`package`.universe.internal.reificationSupport.", "")
.replace("scala.reflect.runtime.`package`.universe.", "")
.replace("scala.collection.immutable.", "")
debug(s"reified tree:\n$sreified\n")
diff --git a/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala b/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala
index c37d5a3273..850030e9ba 100644
--- a/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala
+++ b/src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala
@@ -131,6 +131,10 @@ trait Reifiers { self: Quasiquotes =>
case Placeholder(Hole(tree, NoDot)) if isReifyingPatterns => tree
case Placeholder(hole @ Hole(_, rank @ Dot())) => c.abort(hole.pos, s"Can't $action with $rank here")
case TuplePlaceholder(args) => reifyTuple(args)
+ // Due to greediness of syntactic applied we need to pre-emptively peek inside.
+ // `rest` will always be non-empty due to the rule on top of this one.
+ case SyntacticApplied(id @ Ident(nme.QUASIQUOTE_TUPLE), first :: rest) =>
+ mirrorBuildCall(nme.SyntacticApplied, reifyTreePlaceholder(Apply(id, first)), reify(rest))
case TupleTypePlaceholder(args) => reifyTupleType(args)
case FunctionTypePlaceholder(argtpes, restpe) => reifyFunctionType(argtpes, restpe)
case CasePlaceholder(hole) => hole.tree