Permalink
Browse files

Always include `liftcode` phase in a compiler run.

It turns out that `liftcode` phase must be always
executed or other phases will fail. Specifically,
at the moment `explicitouter` seems to depend on
`liftcode`. One can observe compiler crash by
compiling scala/Array.scala file without `liftcode`
included. At `explicitouter` phase compiler will
crash with assertion error saying it cannot
lift some code.

Review by odersky
  • Loading branch information...
1 parent 2fdbabe commit 0a9d3e00a493b86afb115bf82c904311e5b09465 @gkossakowski gkossakowski committed Aug 26, 2011
@@ -598,6 +598,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter) extends Symb
superAccessors -> "add super accessors in traits and nested classes",
pickler -> "serialize symbol tables",
refChecks -> "reference/override checking, translate nested objects",
+ liftcode -> "reify trees",
uncurry -> "uncurry, translate function values to anonymous classes",
tailCalls -> "replace tail calls by jumps",
specializeTypes -> "@specialized-driven class and method specialization",
@@ -622,7 +623,6 @@ class Global(var currentSettings: Settings, var reporter: Reporter) extends Symb
// and attractive -Xshow-phases output is unlikely if the descs span 20 files anyway.
private val otherPhaseDescriptions = Map(
"flatten" -> "eliminate inner classes",
- "liftcode" -> "reify trees",
"jvm" -> "generate JVM bytecode"
) withDefaultValue ""
@@ -24,7 +24,6 @@ trait JavaPlatform extends Platform[AbstractFile] {
def platformPhases = List(
flatten, // get rid of inner classes
- liftcode, // generate reified trees
genJVM // generate .class files
) ++ depAnalysisPhase

0 comments on commit 0a9d3e0

Please sign in to comment.