aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/LambdaLift.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-02 15:38:44 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-16 13:15:01 +0100
commitf7158754e355447d3411cbda5b6b4c8779eae302 (patch)
treefd043bae3308ced7f4d2a56d96b9cb5026430183 /src/dotty/tools/dotc/transform/LambdaLift.scala
parentf2681f5684ba040b31fa8e0b48bf12a97bf65a83 (diff)
downloaddotty-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.scala10
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)
}
}