summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/reify/phases/Reshape.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-08-15 15:02:19 -0700
committerPaul Phillips <paulp@improving.org>2013-08-17 08:22:52 -0700
commite76507f8793cd025b56ba2a0c3b0cc112bcc8aea (patch)
tree9353e27f0d01b2cda310da36ab666a9dc7a72d2b /src/compiler/scala/reflect/reify/phases/Reshape.scala
parent35122d6cda84bb2df69ca51c6b1b80e61693bf6f (diff)
downloadscala-e76507f8793cd025b56ba2a0c3b0cc112bcc8aea.tar.gz
scala-e76507f8793cd025b56ba2a0c3b0cc112bcc8aea.tar.bz2
scala-e76507f8793cd025b56ba2a0c3b0cc112bcc8aea.zip
An Unapplied extractor.
This makes it a lot less error prone and redundant to find the part you need when unwrapping an UnApply tree.
Diffstat (limited to 'src/compiler/scala/reflect/reify/phases/Reshape.scala')
-rw-r--r--src/compiler/scala/reflect/reify/phases/Reshape.scala18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/compiler/scala/reflect/reify/phases/Reshape.scala b/src/compiler/scala/reflect/reify/phases/Reshape.scala
index b6f27f71ce..7610df67dc 100644
--- a/src/compiler/scala/reflect/reify/phases/Reshape.scala
+++ b/src/compiler/scala/reflect/reify/phases/Reshape.scala
@@ -8,6 +8,7 @@ trait Reshape {
import global._
import definitions._
+ import treeInfo.Unapplied
/**
* Rolls back certain changes that were introduced during typechecking of the reifee.
@@ -65,22 +66,9 @@ trait Reshape {
case block @ Block(stats, expr) =>
val stats1 = reshapeLazyVals(trimSyntheticCaseClassCompanions(stats))
Block(stats1, expr).copyAttrs(block)
- case unapply @ UnApply(fun, args) =>
- def extractExtractor(tree: Tree): Tree = {
- val Apply(fun, args) = tree
- args match {
- case List(Ident(special)) if special == nme.SELECTOR_DUMMY =>
- val Select(extractor, flavor) = fun
- assert(flavor == nme.unapply || flavor == nme.unapplySeq)
- extractor
- case _ =>
- extractExtractor(fun)
- }
- }
-
+ case unapply @ UnApply(Unapplied(Select(fun, nme.unapply | nme.unapplySeq)), args) =>
if (reifyDebug) println("unapplying unapply: " + tree)
- val fun1 = extractExtractor(fun)
- Apply(fun1, args).copyAttrs(unapply)
+ Apply(fun, args).copyAttrs(unapply)
case _ =>
tree
}