Open
Description
Compiler version
3.6.1, 3.6.4-RC1-bin-20241204-a67dbb0-NIGHTLY
Minimized code
case class Record(region: String, env: String)
object foo {
val record = Record(region, env)
val region = "oops"
val env = "hello"
}
object Demo extends App { println(foo.record) }
compiled with -Wsafe-init
Output
Record(null,null)
Expectation
something similar to 2.13's behavior under -Xcheckinit
:
scala-cli run . --scala 2.13 -Xcheckinit
Compiling project (Scala 2.13.15, JVM (21))
[warn] ./demo.scala:5:23
[warn] Reference to uninitialized value region
[warn] val record = Record(region, env)
[warn] ^^^^^^
[warn] ./demo.scala:5:31
[warn] Reference to uninitialized value env
[warn] val record = Record(region, env)
[warn] ^^^
Compiled project (Scala 2.13.15, JVM (21))
Exception in thread "main" java.lang.ExceptionInInitializerError
at Demo$.delayedEndpoint$Demo$1(demo.scala:12)
at Demo$delayedInit$body.apply(demo.scala:12)
at scala.Function0.apply$mcV$sp(Function0.scala:42)
at scala.Function0.apply$mcV$sp$(Function0.scala:42)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
at scala.App.$anonfun$main$1(App.scala:98)
at scala.App.$anonfun$main$1$adapted(App.scala:98)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:619)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:617)
at scala.collection.AbstractIterable.foreach(Iterable.scala:935)
at scala.App.main(App.scala:98)
at scala.App.main$(App.scala:96)
at Demo$.main(demo.scala:12)
at Demo.main(demo.scala)
Caused by: scala.UninitializedFieldError: Uninitialized field: demo.scala: 7
at foo$.region(demo.scala:7)
at foo$.<clinit>(demo.scala:5)
... 14 more