diff options
author | Burak Emir <emir@epfl.ch> | 2006-12-25 11:30:13 +0000 |
---|---|---|
committer | Burak Emir <emir@epfl.ch> | 2006-12-25 11:30:13 +0000 |
commit | 8c2a69d14e1566a7468a530ccfc2d08608483753 (patch) | |
tree | 3afcb07916c49a5c405a16c4a0e73229e7ec85ad /src/compiler/scala/tools/nsc/transform/UnCurry.scala | |
parent | 2820d1ff440f460e4fdd124cccec2bfa52dffaa8 (diff) | |
download | scala-8c2a69d14e1566a7468a530ccfc2d08608483753.tar.gz scala-8c2a69d14e1566a7468a530ccfc2d08608483753.tar.bz2 scala-8c2a69d14e1566a7468a530ccfc2d08608483753.zip |
unapply <-> as in "Matching with Objects"
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/UnCurry.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index 167b8be1c8..05bd8b664d 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -368,12 +368,16 @@ abstract class UnCurry extends InfoTransform with TypingTransformers { mainTransform(new TreeSubstituter(vparams map (.symbol), args).transform(body)) } - case UnApply(fn, args) => - if(fn.symbol.name == nme.unapply) copy.UnApply(tree, fn, transformTrees(args)) - else { - val formals = definitions.unapplySeqResultToMethodSig(fn.tpe) + case UnApply(fn, args) if nme.unapply == fn.symbol.name => + copy.UnApply(tree, fn, transformTrees(args)) + + case UnApply(fn, args) if nme.unapplySeq == fn.symbol.name => + val formals = definitions.unapplyTypeListFromReturnTypeSeq(fn.tpe) copy.UnApply(tree, fn, transformTrees(transformArgs(tree.pos, args, formals))) - } + + case UnApply(_, _) => + assert(false,"internal error: UnApply node has wrong symbol"); null + case Apply(fn, args) => if (settings.noassertions.value && (fn.symbol ne null) && |