diff options
author | Den Shabalin <den.shabalin@gmail.com> | 2013-12-04 17:52:37 +0100 |
---|---|---|
committer | Den Shabalin <den.shabalin@gmail.com> | 2013-12-10 16:02:45 +0100 |
commit | e6eed418eefe3122b15c8e64b8697c5770a74960 (patch) | |
tree | 2161f619ccb44fda37697d297ebe52b78028adad /src/reflect | |
parent | 1188f95acf71486c4a75b9ad428a92e6e401f5cd (diff) | |
download | scala-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.scala | 8 |
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)) } } |