Skip to content

Instantly share code, notes, and snippets.

@hubertp
Created July 27, 2012 17:07
Show Gist options
  • Save hubertp/3189196 to your computer and use it in GitHub Desktop.
Save hubertp/3189196 to your computer and use it in GitHub Desktop.
compiler crash with genASM
quick.comp:
[scalacfork] Compiling 144 files to /home/hubert/tmp/repos/scala-dev/build/quick/classes/compiler
[scalacfork] /home/hubert/tmp/repos/scala-dev/src/compiler/scala/tools/nsc/doc/html/page/diagram/DotDiagramGenerator.scala:336: warning: This catches all Throwables. If this is really intended, use `case exc : Throwable` to clear this warning.
[scalacfork] case exc =>
[scalacfork] ^
[scalacfork] error:
[scalacfork] while compiling: /home/hubert/tmp/repos/scala-dev/src/compiler/scala/tools/util/VerifyClass.scala
[scalacfork] during phase: jvm
[scalacfork] library version: version 2.11.0-20120725-151122-fe513d1f14
[scalacfork] compiler version: version 2.11.0-20120725-151122-fe513d1f14
[scalacfork] reconstructed args: -Yreify-copypaste -classpath /home/hubert/tmp/repos/scala-dev/build/quick/classes/library:/home/hubert/tmp/repos/scala-dev/build/quick/classes/reflect:/home/hubert/tmp/repos/scala-dev/build/quick/classes/compiler:/usr/share/ant/lib/ant.jar:/home/hubert/.m2/repository/com/typesafe/config/0.4.0/config-0.4.0.jar:/home/hubert/tmp/repos/scala-dev/build/libs/classes/forkjoin:/home/hubert/tmp/repos/scala-dev/build/libs/classes/fjbg:/home/hubert/tmp/repos/scala-dev/build/asm/classes:/home/hubert/tmp/repos/scala-dev/lib/jline.jar -d /home/hubert/tmp/repos/scala-dev/build/quick/classes/compiler
[scalacfork]
[scalacfork] last tree to typer: Literal(Constant(Tuple2))
[scalacfork] symbol: null
[scalacfork] symbol definition: null
[scalacfork] tpe: Class(classOf[scala.Tuple2])
[scalacfork] symbol owners:
[scalacfork] context owners: anonymous class VerifyClass$$anonfun$main$2 -> package util
[scalacfork]
[scalacfork] == Enclosing template or block ==
[scalacfork]
[scalacfork] Template( // val <local $anonfun>: <notype>, tree.tpe=scala.tools.util.VerifyClass$$anonfun$main$2
[scalacfork] "scala.runtime.AbstractFunction1$mcVL$sp", "scala.Serializable" // parents
[scalacfork] ValDef(
[scalacfork] private <lifted>
[scalacfork] "_"
[scalacfork] <tpt>
[scalacfork] <empty>
[scalacfork] )
[scalacfork] // 4 statements
[scalacfork] DefDef( // final def apply(x$1: Tuple2): Unit
[scalacfork] <method> final <triedcooking>
[scalacfork] "apply"
[scalacfork] []
[scalacfork] // 1 parameter list
[scalacfork] ValDef( // x$6: Tuple2
[scalacfork] <param> <synthetic> <triedcooking>
[scalacfork] "x$6"
[scalacfork] <tpt> // tree.tpe=Tuple2
[scalacfork] <empty>
[scalacfork] )
[scalacfork] <tpt> // tree.tpe=Unit
[scalacfork] Block( // tree.tpe=Unit
[scalacfork] // 3 statements
[scalacfork] ValDef( // case val x1: Tuple2
[scalacfork] case <synthetic> <triedcooking>
[scalacfork] "x1"
[scalacfork] <tpt> // tree.tpe=Tuple2
[scalacfork] Typed( // tree.tpe=Tuple2
[scalacfork] "x$6" // x$6: Tuple2, tree.tpe=Tuple2
[scalacfork] <tpt> // tree.tpe=Tuple2
[scalacfork] )
[scalacfork] )
[scalacfork] LabelDef( // case def case4(): Unit, tree.tpe=Unit
[scalacfork] ()
[scalacfork] If( // tree.tpe=Unit
[scalacfork] Apply( // final def ne(x$1: Object): Boolean in class Object, tree.tpe=Boolean
[scalacfork] "x1"."ne" // final def ne(x$1: Object): Boolean in class Object, tree.tpe=(x$1: Object)Boolean
[scalacfork] null
[scalacfork] )
[scalacfork] Block( // tree.tpe=Unit
[scalacfork] // 2 statements
[scalacfork] ValDef( // val name: String
[scalacfork] <triedcooking>
[scalacfork] "name"
[scalacfork] <tpt> // tree.tpe=String
[scalacfork] Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=String
[scalacfork] TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()String
[scalacfork] x1._1()."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
[scalacfork] <tpt> // tree.tpe=String
[scalacfork] )
[scalacfork] Nil
[scalacfork] )
[scalacfork] )
[scalacfork] ValDef( // val result: String
[scalacfork] <triedcooking>
[scalacfork] "result"
[scalacfork] <tpt> // tree.tpe=String
[scalacfork] Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=String
[scalacfork] TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()String
[scalacfork] x1._2()."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
[scalacfork] <tpt> // tree.tpe=String
[scalacfork] )
[scalacfork] Nil
[scalacfork] )
[scalacfork] )
[scalacfork] Apply( // case def matchEnd3(x: scala.runtime.BoxedUnit): Unit, tree.tpe=Unit
[scalacfork] "matchEnd3" // case def matchEnd3(x: scala.runtime.BoxedUnit): Unit, tree.tpe=(x: scala.runtime.BoxedUnit)Unit
[scalacfork] Block( // tree.tpe=scala.runtime.BoxedUnit
[scalacfork] Apply( // def println(x: Object): Unit in object Predef, tree.tpe=Unit
[scalacfork] scala.this."Predef"."println" // def println(x: Object): Unit in object Predef, tree.tpe=(x: Object)Unit
[scalacfork] Apply( // final def +(x$1: Object): String in class String, tree.tpe=String
[scalacfork] name.+(" had error: ")."$plus" // final def +(x$1: Object): String in class String, tree.tpe=(x$1: Object)String
[scalacfork] "result" // val result: String, tree.tpe=String
[scalacfork] )
[scalacfork] )
[scalacfork] "scala"."runtime"."BoxedUnit"."UNIT" // final val UNIT: scala.runtime.BoxedUnit in object BoxedUnit, tree.tpe=scala.runtime.BoxedUnit
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork] Apply( // case def case5(): Unit, tree.tpe=Unit
[scalacfork] "case5" // case def case5(): Unit, tree.tpe=()Unit
[scalacfork] Nil
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork] LabelDef( // case def case5(): Unit, tree.tpe=Unit
[scalacfork] ()
[scalacfork] Apply( // case def matchEnd3(x: scala.runtime.BoxedUnit): Unit, tree.tpe=Unit
[scalacfork] "matchEnd3" // case def matchEnd3(x: scala.runtime.BoxedUnit): Unit, tree.tpe=(x: scala.runtime.BoxedUnit)Unit
[scalacfork] Throw( // tree.tpe=Nothing
[scalacfork] Apply( // def <init>(obj: Object): MatchError in class MatchError, tree.tpe=MatchError
[scalacfork] new MatchError."<init>" // def <init>(obj: Object): MatchError in class MatchError, tree.tpe=(obj: Object)MatchError
[scalacfork] "x1" // case val x1: Tuple2, tree.tpe=Tuple2
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork] LabelDef( // case def matchEnd3(x: scala.runtime.BoxedUnit): Unit, tree.tpe=Unit
[scalacfork] "x" // x: scala.runtime.BoxedUnit, tree.tpe=scala.runtime.BoxedUnit
[scalacfork] ()
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork] DefDef( // final def apply(v1: Object): Object
[scalacfork] <method> final <bridge> <hidden>
[scalacfork] "apply"
[scalacfork] []
[scalacfork] // 1 parameter list
[scalacfork] ValDef( // v1: Object
[scalacfork] <param> <triedcooking>
[scalacfork] "v1"
[scalacfork] <tpt> // tree.tpe=Object
[scalacfork] <empty>
[scalacfork] )
[scalacfork] <tpt> // tree.tpe=Object
[scalacfork] Block( // tree.tpe=scala.runtime.BoxedUnit
[scalacfork] Apply( // final def apply(x$1: Tuple2): Unit, tree.tpe=Unit
[scalacfork] VerifyClass$$anonfun$main$2.this."apply" // final def apply(x$1: Tuple2): Unit, tree.tpe=(x$1: Tuple2)Unit
[scalacfork] Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=Tuple2
[scalacfork] TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()Tuple2
[scalacfork] "v1"."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
[scalacfork] <tpt> // tree.tpe=Tuple2
[scalacfork] )
[scalacfork] Nil
[scalacfork] )
[scalacfork] )
[scalacfork] "scala"."runtime"."BoxedUnit"."UNIT" // final val UNIT: scala.runtime.BoxedUnit in object BoxedUnit, tree.tpe=scala.runtime.BoxedUnit
[scalacfork] )
[scalacfork] )
[scalacfork] DefDef( // final def apply(v1: Object): Unit
[scalacfork] <method> final <bridge> <hidden>
[scalacfork] "apply"
[scalacfork] []
[scalacfork] // 1 parameter list
[scalacfork] ValDef( // v1: Object
[scalacfork] <param> <triedcooking>
[scalacfork] "v1"
[scalacfork] <tpt> // tree.tpe=Object
[scalacfork] <empty>
[scalacfork] )
[scalacfork] <tpt> // tree.tpe=Unit
[scalacfork] Apply( // final def apply(x$1: Tuple2): Unit, tree.tpe=Unit
[scalacfork] VerifyClass$$anonfun$main$2.this."apply" // final def apply(x$1: Tuple2): Unit, tree.tpe=(x$1: Tuple2)Unit
[scalacfork] Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=Tuple2
[scalacfork] TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()Tuple2
[scalacfork] "v1"."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
[scalacfork] <tpt> // tree.tpe=Tuple2
[scalacfork] )
[scalacfork] Nil
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork] DefDef( // def <init>(): scala.tools.util.VerifyClass$$anonfun$main$2
[scalacfork] <method> <triedcooking>
[scalacfork] "<init>"
[scalacfork] []
$sp
[scalacfork] VerifyClass$$anonfun$main$2.super."<init>" // def <init>(): scala.runtime.AbstractFunction1$mcVL$sp in class AbstractFunction1$mcVL$sp, tree.tpe=()scala.runtime.AbstractFunction1$mcVL$sp
[scalacfork] Nil
[scalacfork] )
[scalacfork] ()
[scalacfork] )
[scalacfork] )
[scalacfork] )
[scalacfork]
[scalacfork] == Expanded type of tree ==
[scalacfork]
[scalacfork] ConstantType(value = Constant(Tuple2))
[scalacfork]
[scalacfork] uncaught exception during compilation: java.lang.ArrayIndexOutOfBoundsException
[scalacfork] error: java.lang.ArrayIndexOutOfBoundsException: -1
[scalacfork] at scala.tools.asm.Frame.merge(Unknown Source)
[scalacfork] at scala.tools.asm.Frame.merge(Unknown Source)
[scalacfork] at scala.tools.asm.MethodWriter.visitMaxs(Unknown Source)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genMethod(GenASM.scala:1623)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$$anonfun$genClass$4.apply(GenASM.scala:1456)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$$anonfun$genClass$4.apply(GenASM.scala:1456)
[scalacfork] at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
[scalacfork] at scala.collection.immutable.List.foreach(List.scala:78)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1456)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:180)
[scalacfork] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1546)
[scalacfork] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1520)
[scalacfork] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1516)
[scalacfork] at scala.tools.nsc.Global$Run.compile(Global.scala:1629)
[scalacfork] at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
[scalacfork] at scala.tools.nsc.Main$.doCompile(Main.scala:79)
[scalacfork] at scala.tools.nsc.Driver.process(Driver.scala:54)
[scalacfork] at scala.tools.nsc.Driver.main(Driver.scala:67)
[scalacfork] at scala.tools.nsc.Main.main(Main.scala)
[scalacfork]
[scalacfork] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
[scalacfork] at scala.tools.asm.Frame.merge(Unknown Source)
[scalacfork] at scala.tools.asm.Frame.merge(Unknown Source)
[scalacfork] at scala.tools.asm.MethodWriter.visitMaxs(Unknown Source)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genMethod(GenASM.scala:1623)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$$anonfun$genClass$4.apply(GenASM.scala:1456)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$$anonfun$genClass$4.apply(GenASM.scala:1456)
[scalacfork] at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
[scalacfork] at scala.collection.immutable.List.foreach(List.scala:78)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1456)
[scalacfork] at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:180)
[scalacfork] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1546)
[scalacfork] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1520)
[scalacfork] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1516)
[scalacfork] at scala.tools.nsc.Global$Run.compile(Global.scala:1629)
[scalacfork] at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
[scalacfork] at scala.tools.nsc.Main$.doCompile(Main.scala:79)
[scalacfork] at scala.tools.nsc.Driver.process(Driver.scala:54)
[scalacfork] at scala.tools.nsc.Driver.main(Driver.scala:67)
[scalacfork] at scala.tools.nsc.Main.main(Main.scala)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment