summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2014-08-14 23:40:37 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2014-09-01 14:26:55 +0200
commit2606bd921e434a6d8edb21f7f04dbfb10045026e (patch)
tree0a8dbbd897ee7c389ed0778399e1701300bd7648 /src
parent3bcad9abc0010931b230b182f6f5de7e0860ae45 (diff)
downloadscala-2606bd921e434a6d8edb21f7f04dbfb10045026e.tar.gz
scala-2606bd921e434a6d8edb21f7f04dbfb10045026e.tar.bz2
scala-2606bd921e434a6d8edb21f7f04dbfb10045026e.zip
Don't traverse all trees in delambdafy phase if delambdafy:inline
If delambdafy:method is not enabled, the delambdafy method is a nop.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Delambdafy.scala9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Delambdafy.scala b/src/compiler/scala/tools/nsc/transform/Delambdafy.scala
index 371061662e..9cc8d779a0 100644
--- a/src/compiler/scala/tools/nsc/transform/Delambdafy.scala
+++ b/src/compiler/scala/tools/nsc/transform/Delambdafy.scala
@@ -37,6 +37,15 @@ abstract class Delambdafy extends Transform with TypingTransformers with ast.Tre
/** the following two members override abstract members in Transform */
val phaseName: String = "delambdafy"
+ override def newPhase(prev: scala.tools.nsc.Phase): StdPhase = {
+ if (settings.Ydelambdafy.value == "method") new Phase(prev)
+ else new SkipPhase(prev)
+ }
+
+ class SkipPhase(prev: scala.tools.nsc.Phase) extends StdPhase(prev) {
+ def apply(unit: global.CompilationUnit): Unit = ()
+ }
+
protected def newTransformer(unit: CompilationUnit): Transformer =
new DelambdafyTransformer(unit)