diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-03-10 11:04:07 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-03-10 11:04:07 -0700 |
commit | 7f07d44bcc97ba8435e8c77393554571c9a006ad (patch) | |
tree | 985ceffa39650867112d9d8b94924aa3058caadb /src/compiler | |
parent | 76e3758e46d633573e5d4a678a7cd9e9433804cc (diff) | |
parent | 14e77b9c5071ea54bf3ace709037a1779d2c82f9 (diff) | |
download | scala-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/compiler')
-rw-r--r-- | src/compiler/scala/tools/reflect/quasiquotes/Quasiquotes.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/reflect/quasiquotes/Reifiers.scala | 4 |
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 |