summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/transform/LambdaLift.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-10-17 21:49:56 +0000
committerMartin Odersky <odersky@gmail.com>2005-10-17 21:49:56 +0000
commit15956fc33e4bdc8eb760fdaeaf88744065177387 (patch)
tree1a3f0ae68865cdc8208092d3cc22dae531043480 /sources/scala/tools/nsc/transform/LambdaLift.scala
parentdb20991e477bec6e2f0d752a6aae943aefde88bb (diff)
downloadscala-15956fc33e4bdc8eb760fdaeaf88744065177387.tar.gz
scala-15956fc33e4bdc8eb760fdaeaf88744065177387.tar.bz2
scala-15956fc33e4bdc8eb760fdaeaf88744065177387.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/transform/LambdaLift.scala')
-rwxr-xr-xsources/scala/tools/nsc/transform/LambdaLift.scala22
1 files changed, 13 insertions, 9 deletions
diff --git a/sources/scala/tools/nsc/transform/LambdaLift.scala b/sources/scala/tools/nsc/transform/LambdaLift.scala
index 2cedb71a90..21f13e39c0 100755
--- a/sources/scala/tools/nsc/transform/LambdaLift.scala
+++ b/sources/scala/tools/nsc/transform/LambdaLift.scala
@@ -317,17 +317,21 @@ abstract class LambdaLift extends InfoTransform {
}
}
- override def transform(tree: Tree): Tree =
+ override def transform(tree: Tree): Tree = {
postTransform(super.transform(tree) setType lifted(tree.tpe));
-
- /** Transform statements and add lifted definitions to them. */
- override def transformStats(stats: List[Tree], exprOwner: Symbol): List[Tree] = {
- val stats1 = super.transformStats(stats, exprOwner);
- if (currentOwner.isClass && !currentOwner.isPackageClass && liftedDefs(currentOwner).hasNext)
- stats1 ::: liftedDefs(currentOwner).toList
- else
- stats1
}
+ /** Transform statements and add lifted definitions to them. */
+ override def transformStats(stats: List[Tree], exprOwner: Symbol): List[Tree] =
+ for (val stat <- super.transformStats(stats, exprOwner)) yield {
+ stat match {
+ case ClassDef(mods, name, tparams, tpt, impl @ Template(parents, body))
+ if (liftedDefs(stat.symbol).hasNext) =>
+ copy.ClassDef(stat, mods, name, tparams, tpt,
+ copy.Template(impl, parents, body ::: liftedDefs(stat.symbol).toList))
+ case _ =>
+ stat
+ }
+ }
override def transformUnit(unit: CompilationUnit): unit = {
computeFreeVars;