summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-12-04 17:52:37 +0100
committerDen Shabalin <den.shabalin@gmail.com>2013-12-10 16:02:45 +0100
commite6eed418eefe3122b15c8e64b8697c5770a74960 (patch)
tree2161f619ccb44fda37697d297ebe52b78028adad /src/reflect
parent1188f95acf71486c4a75b9ad428a92e6e401f5cd (diff)
downloadscala-e6eed418eefe3122b15c8e64b8697c5770a74960.tar.gz
scala-e6eed418eefe3122b15c8e64b8697c5770a74960.tar.bz2
scala-e6eed418eefe3122b15c8e64b8697c5770a74960.zip
SI-7789 make quasiquotes deconstruct UnApply trees
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/BuildUtils.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/BuildUtils.scala b/src/reflect/scala/reflect/internal/BuildUtils.scala
index b9458e4b09..6f2cb239c5 100644
--- a/src/reflect/scala/reflect/internal/BuildUtils.scala
+++ b/src/reflect/scala/reflect/internal/BuildUtils.scala
@@ -163,9 +163,11 @@ trait BuildUtils { self: SymbolTable =>
def apply(tree: Tree, argss: List[List[Tree]]): Tree =
argss.foldLeft(tree) { (f, args) => Apply(f, args.map(treeInfo.assignmentToMaybeNamedArg)) }
- def unapply(tree: Tree): Some[(Tree, List[List[Tree]])] = {
- val treeInfo.Applied(fun, targs, argss) = tree
- Some((SyntacticTypeApplied(fun, targs), argss))
+ def unapply(tree: Tree): Some[(Tree, List[List[Tree]])] = tree match {
+ case UnApply(treeInfo.Unapplied(Select(fun, nme.unapply)), pats) =>
+ Some((fun, pats :: Nil))
+ case treeInfo.Applied(fun, targs, argss) =>
+ Some((SyntacticTypeApplied(fun, targs), argss))
}
}