diff options
author | Martin Odersky <odersky@gmail.com> | 2016-02-16 16:11:09 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-02-16 16:11:09 +0100 |
commit | 17296763448bf86c9f95b1458e5722b9829e8b3e (patch) | |
tree | 7554d9011d9f9eb140a3e0680265ad3eccb77457 /src/dotty/tools/dotc/ast/Desugar.scala | |
parent | 06bfbd379fe350a93e3de38940fda0e359a07e1d (diff) | |
download | dotty-17296763448bf86c9f95b1458e5722b9829e8b3e.tar.gz dotty-17296763448bf86c9f95b1458e5722b9829e8b3e.tar.bz2 dotty-17296763448bf86c9f95b1458e5722b9829e8b3e.zip |
Untuple using `def` not `val`.
As retronym noted on #897, `val` forces to early.
Diffstat (limited to 'src/dotty/tools/dotc/ast/Desugar.scala')
-rw-r--r-- | src/dotty/tools/dotc/ast/Desugar.scala | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala index c1083d26d..991940f10 100644 --- a/src/dotty/tools/dotc/ast/Desugar.scala +++ b/src/dotty/tools/dotc/ast/Desugar.scala @@ -591,18 +591,19 @@ object desugar { /** Map n-ary function `(p1, ..., pn) => body` where n != 1 to unary function as follows: * * x$1 => { - * val p1 = x$1._1 + * def p1 = x$1._1 * ... - * val pn = x$1._n + * def pn = x$1._n * body * } */ - def makeUnaryCaseLambda(params: List[ValDef], body: Tree)(implicit ctx: Context): Tree = { + def makeTupledFunction(params: List[ValDef], body: Tree)(implicit ctx: Context): Tree = { val param = makeSyntheticParameter() def selector(n: Int) = Select(refOfDef(param), nme.selectorName(n)) val vdefs = params.zipWithIndex.map{ - case(param, idx) => cpy.ValDef(param)(rhs = selector(idx)) + case (param, idx) => + DefDef(param.name, Nil, Nil, TypeTree(), selector(idx)).withPos(param.pos) } Function(param :: Nil, Block(vdefs, body)) } |