while compiling: /home/chris/project-euler/65/scala/src/main/scala/A.scala during phase: global=lambdalift, atPhase=constructors library version: version 2.10.2 compiler version: version 2.10.2 reconstructed args: -bootclasspath /usr/lib/jvm/jdk1.7.0/jre/lib/resources.jar:/usr/lib/jvm/jdk1.7.0/jre/lib/rt.jar:/usr/lib/jvm/jdk1.7.0/jre/lib/sunrsasign.jar:/usr/lib/jvm/jdk1.7.0/jre/lib/jsse.jar:/usr/lib/jvm/jdk1. 7.0/jre/lib/jce.jar:/usr/lib/jvm/jdk1.7.0/jre/lib/charsets.jar:/usr/lib/jvm/jdk1.7.0/jre/lib/jfr.jar:/usr/lib/jvm/jdk1.7.0/jre/classes:/home/chris/.sbt/boot/scala-2.10.2/lib/scala-library.jar -classpath /home/chris/proje ct-euler/65/scala/target/scala-2.10/classes last tree to typer: term i symbol: value i in class C (flags: private[this]) symbol definition: private[this] val i: Int tpe: symbol owners: value i -> class C -> object A -> package context owners: value x -> value $anonfun -> value -> object A -> package == Enclosing template or block == DefDef( // final def apply(x0$2: A.B,x1$2: Nothing): A.B final "apply" [] // 1 parameter list ValDef( // x0$2: A.B "x0$2" // tree.tpe=A.B ) ValDef( // x1$2: Nothing "x1$2" // tree.tpe=Nothing ) // tree.tpe=A.B Block( // tree.tpe=A.B // 3 statements ValDef( // case val x1: Tuple2 case "x1" // tree.tpe=Tuple2 Apply( // def (_1: Object,_2: Object): Tuple2 in class Tuple2, tree.tpe=Tuple2 new Tuple2."" // def (_1: Object,_2: Object): Tuple2 in class Tuple2, tree.tpe=(_1: Object, _2: Object)Tuple2 // 2 arguments "x0$2" // x0$2: A.B, tree.tpe=A.B "x1$2" // x1$2: Nothing, tree.tpe=Nothing ) ) LabelDef( // case def case4(): A.B, tree.tpe=A.B () If( // tree.tpe=A.B Apply( // final def ne(x$1: Object): Boolean in class Object, tree.tpe=Boolean "x1"."ne" // final def ne(x$1: Object): Boolean in class Object, tree.tpe=(x$1: Object)Boolean null ) Block( // tree.tpe=A.B ValDef( // val x: A.B "x" // tree.tpe=A.B Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=A.B TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()A.B x1._1()."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0 // tree.tpe=A.B ) Nil ) ) Apply( // case def matchEnd3(x: A.B): A.B, tree.tpe=A.B "matchEnd3" // case def matchEnd3(x: A.B): A.B, tree.tpe=(x: A.B)A.B "x" // val x: A.B, tree.tpe=A.B ) ) Apply( // case def case5(): A.B, tree.tpe=A.B "case5" // case def case5(): A.B, tree.tpe=()A.B Nil ) ) ) LabelDef( // case def case5(): A.B, tree.tpe=A.B () Apply( // case def matchEnd3(x: A.B): A.B, tree.tpe=A.B "matchEnd3" // case def matchEnd3(x: A.B): A.B, tree.tpe=(x: A.B)A.B Throw( // tree.tpe=Nothing Apply( // def (obj: Object): MatchError in class MatchError, tree.tpe=MatchError new MatchError."" // def (obj: Object): MatchError in class MatchError, tree.tpe=(obj: Object)MatchError "x1" // case val x1: Tuple2, tree.tpe=Tuple2 ) ) ) ) LabelDef( // case def matchEnd3(x: A.B): A.B, tree.tpe=A.B "x" // x: A.B, tree.tpe=A.B "x" // x: A.B, tree.tpe=A.B ) ) ) == Expanded type of tree == unhandled exception while transforming A.scala