Closed
Description
minimized code
trait Foo {
def parent: Option[Foo]
def getParent: Option[Foo] = parent
}
class Bar(val parent: Option[Foo]) extends Foo
class Qux(parent: Option[Qux]) extends Bar(parent)
object Qux {
val qux: Qux = new Qux(None)
def main(args: Array[String]): Unit = println(qux.getParent)
}
This code compiles, but crashes at runtime.
Exception in thread "main" java.lang.IllegalAccessError: Qux.parent()Lscala/Option;
at Foo.getParent(Foo.scala:3)
at Bar.getParent(Foo.scala:6)
at Qux$.main(Foo.scala:12)
at Qux.main(Foo.scala)
expectation
It should print None
, like Scala 2 does. Note that changing Qux
's constructor parameter name to something other than parent
fixes the issue.