From cdfbdb14f0d6bb4f3a5dd284fd17e86addaa5d03 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 18 Feb 2016 10:29:41 +0100 Subject: [PATCH] Keep named arguments during eta expansion Fixes #1096. --- src/dotty/tools/dotc/typer/EtaExpansion.scala | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/dotty/tools/dotc/typer/EtaExpansion.scala b/src/dotty/tools/dotc/typer/EtaExpansion.scala index aa210e6ed40a..f4a1f97cd74f 100644 --- a/src/dotty/tools/dotc/typer/EtaExpansion.scala +++ b/src/dotty/tools/dotc/typer/EtaExpansion.scala @@ -48,13 +48,11 @@ object EtaExpansion { } /** Lift a function argument, stripping any NamedArg wrapper */ - def liftArg(defs: mutable.ListBuffer[Tree], arg: Tree, prefix: String = "")(implicit ctx: Context): Tree = { - val arg1 = arg match { - case NamedArg(_, arg1) => arg1 - case arg => arg + def liftArg(defs: mutable.ListBuffer[Tree], arg: Tree, prefix: String = "")(implicit ctx: Context): Tree = + arg match { + case arg @ NamedArg(name, arg1) => cpy.NamedArg(arg)(name, lift(defs, arg1, prefix)) + case arg => lift(defs, arg, prefix) } - lift(defs, arg1, prefix) - } /** Lift arguments that are not-idempotent into ValDefs in buffer `defs` * and replace by the idents of so created ValDefs.