summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-03-27 20:58:02 +0100
committerJason Zaugg <jzaugg@gmail.com>2014-03-27 20:58:02 +0100
commit26419257cc0b1b37e0130dacde63715340306c1c (patch)
treee7f7a1a0d5baf5e820765caf28ecec50a712e5f9 /src
parentc34826d1ca183a29f73eb056f69c59a50091ec4d (diff)
parenta0c3bbdb3a4b1055834f3ff5f729dc3af1867696 (diff)
downloadscala-26419257cc0b1b37e0130dacde63715340306c1c.tar.gz
scala-26419257cc0b1b37e0130dacde63715340306c1c.tar.bz2
scala-26419257cc0b1b37e0130dacde63715340306c1c.zip
Merge pull request #3659 from xeno-by/topic/uncurry-ctors
SI-8451 makes uncurry more forgiving
Diffstat (limited to 'src')
-rw-r--r--src/reflect/scala/reflect/internal/ReificationSupport.scala12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/ReificationSupport.scala b/src/reflect/scala/reflect/internal/ReificationSupport.scala
index f9f93fbff0..37f7b85720 100644
--- a/src/reflect/scala/reflect/internal/ReificationSupport.scala
+++ b/src/reflect/scala/reflect/internal/ReificationSupport.scala
@@ -523,11 +523,21 @@ trait ReificationSupport { self: SymbolTable =>
object SyntacticDefDef extends SyntacticDefDefExtractor {
def apply(mods: Modifiers, name: TermName, tparams: List[Tree],
vparamss: List[List[Tree]], tpt: Tree, rhs: Tree): DefDef = {
+ val tparams0 = mkTparams(tparams)
val vparamss0 = mkParam(vparamss, PARAM)
- DefDef(mods, name, mkTparams(tparams), vparamss0, tpt, rhs)
+ val rhs0 = {
+ if (name != nme.CONSTRUCTOR) rhs
+ else rhs match {
+ case Block(_, _) => rhs
+ case _ => Block(List(rhs), gen.mkSyntheticUnit)
+ }
+ }
+ DefDef(mods, name, tparams0, vparamss0, tpt, rhs0)
}
def unapply(tree: Tree): Option[(Modifiers, TermName, List[TypeDef], List[List[ValDef]], Tree, Tree)] = tree match {
+ case DefDef(mods, nme.CONSTRUCTOR, tparams, vparamss, tpt, Block(List(expr), Literal(Constant(())))) =>
+ Some((mods, nme.CONSTRUCTOR, tparams, vparamss, tpt, expr))
case DefDef(mods, name, tparams, vparamss, tpt, rhs) =>
Some((mods, name, tparams, vparamss, tpt, rhs))
case _ => None