diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-06-25 08:03:04 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-06-25 08:03:04 -0700 |
commit | 643a143504106de439451a4dcb7f76fc8df6b73c (patch) | |
tree | f20fc6a73957daafcbb902a1345c2df55f12ed90 /src/compiler | |
parent | 1ef679bc18c7fd342bbc76865cfbf4a1c99fd035 (diff) | |
parent | 4736897ad2a6425c64cadfe80d5e6d7751ee0fec (diff) | |
download | scala-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/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala | 8 |
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 |