Skip to content

VerifyError with recursive case object #1725

Closed
@scabug

Description

@scabug
object Omega extends Application {

trait Nat {
  def isZero() : Boolean
  def pred() : Nat
  def toInt() : Int = 
   this match {
     case Zero() => 0 
     case Succ(p) => p.toInt + 1 
   }
}

case class Zero() extends Nat { 
  def isZero() = true
  def pred() = null
}

case class Succ(p : Nat) extends Nat {
  def isZero  = false
  def pred() = p
}

case object Omega extends Succ(Omega) 

println(Omega.toInt)

}

yields

java.lang.VerifyError: (class: Omega$$Omega$$, method: <init> signature: ()V) Expecting to find object/array on stack
	at Omega$$.<init>(omega.scala:25)
	at Omega$$.<clinit>(omega.scala)
	at Omega.main(omega.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at scala.tools.nsc.ObjectRunner$$$$anonfun$$run$$1.apply(ObjectRunner.scala:75)
	at scala.tools.nsc.ObjectRunner$$.withContextClassLoader(ObjectRunner.scala:49)
	at scala.tools.nsc.ObjectRunner$$.run(ObjectRunner.scala:74)
	at scala.tools.nsc.MainGenericRunner$$.main(MainGenericRunner.scala:154)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions