diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-02 15:38:44 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-16 13:15:01 +0100 |
commit | f7158754e355447d3411cbda5b6b4c8779eae302 (patch) | |
tree | fd043bae3308ced7f4d2a56d96b9cb5026430183 /src/dotty/tools/dotc/transform/LambdaLift.scala | |
parent | f2681f5684ba040b31fa8e0b48bf12a97bf65a83 (diff) | |
download | dotty-f7158754e355447d3411cbda5b6b4c8779eae302.tar.gz dotty-f7158754e355447d3411cbda5b6b4c8779eae302.tar.bz2 dotty-f7158754e355447d3411cbda5b6b4c8779eae302.zip |
Make LambdaLifted methods follow JVM8 lambda parameters order.
LambdaMetafactory expects environment to go first.
Diffstat (limited to 'src/dotty/tools/dotc/transform/LambdaLift.scala')
-rw-r--r-- | src/dotty/tools/dotc/transform/LambdaLift.scala | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/transform/LambdaLift.scala b/src/dotty/tools/dotc/transform/LambdaLift.scala index 95c5cd529..c8dacd1d7 100644 --- a/src/dotty/tools/dotc/transform/LambdaLift.scala +++ b/src/dotty/tools/dotc/transform/LambdaLift.scala @@ -257,8 +257,8 @@ class LambdaLift extends MiniPhase with IdentityDenotTransformer { thisTransform case mt @ MethodType(pnames, ptypes) => val ps = proxies(local.skipConstructor) MethodType( - pnames ++ ps.map(_.name.asTermName), - ptypes ++ ps.map(_.info), + ps.map(_.name.asTermName) ++ pnames, + ps.map(_.info) ++ ptypes, mt.resultType) case info => info } @@ -340,7 +340,7 @@ class LambdaLift extends MiniPhase with IdentityDenotTransformer { thisTransform private def addFreeArgs(sym: Symbol, args: List[Tree])(implicit ctx: Context, info: TransformerInfo) = free get sym match { - case Some(fvs) => args ++ fvs.toList.map(proxyRef(_)) + case Some(fvs) => fvs.toList.map(proxyRef(_)) ++ args case _ => args } @@ -354,9 +354,9 @@ class LambdaLift extends MiniPhase with IdentityDenotTransformer { thisTransform transformFollowingDeep(ValDef(proxy.asTerm).withPos(tree.pos)).asInstanceOf[ValDef]) tree match { case tree: DefDef => - cpy.DefDef(tree)(vparamss = tree.vparamss.map(_ ++ freeParamDefs)) + cpy.DefDef(tree)(vparamss = tree.vparamss.map(freeParamDefs ++ _)) case tree: Template => - cpy.Template(tree)(body = tree.body ++ freeParamDefs) + cpy.Template(tree)(body = freeParamDefs ++ tree.body) } } |