summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-06-25 08:03:04 -0700
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-06-25 08:03:04 -0700
commit643a143504106de439451a4dcb7f76fc8df6b73c (patch)
treef20fc6a73957daafcbb902a1345c2df55f12ed90 /src
parent1ef679bc18c7fd342bbc76865cfbf4a1c99fd035 (diff)
parent4736897ad2a6425c64cadfe80d5e6d7751ee0fec (diff)
downloadscala-643a143504106de439451a4dcb7f76fc8df6b73c.tar.gz
scala-643a143504106de439451a4dcb7f76fc8df6b73c.tar.bz2
scala-643a143504106de439451a4dcb7f76fc8df6b73c.zip
Merge pull request #760 from retronym/ticket/5966-3
SI-5966 Fix eta expansion for repeated parameters with zero arguments.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala b/src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala
index e1fb683aa9..177d1ddf19 100644
--- a/src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala
@@ -88,9 +88,11 @@ trait EtaExpansion { self: Analyzer =>
defs ++= stats
liftoutPrefix(fun)
case Apply(fn, args) =>
- val byName = fn.tpe.params.map(p => definitions.isByNameParamType(p.tpe))
- // zipAll: with repeated params, there might be more args than params
- val newArgs = args.zipAll(byName, EmptyTree, false) map { case (arg, byN) => liftout(arg, byN) }
+ val byName: Int => Option[Boolean] = fn.tpe.params.map(p => definitions.isByNameParamType(p.tpe)).lift
+ val newArgs = mapWithIndex(args) { (arg, i) =>
+ // with repeated params, there might be more or fewer args than params
+ liftout(arg, byName(i).getOrElse(false))
+ }
treeCopy.Apply(tree, liftoutPrefix(fn), newArgs) setType null
case TypeApply(fn, args) =>
treeCopy.TypeApply(tree, liftoutPrefix(fn), args) setType null