Closed
Description
Compiler version
3.3.6, 3.7.0 and 3.7.1-RC2
Minimized code
inline def simpleInlineWrap(f: => Any): Unit = f
@main def main(): Unit = {
simpleInlineWrap {
object lifecycle {
object Lifecycle {
trait FromZIO
}
}
object defn {
val Lifecycle: lifecycle.Lifecycle.type = lifecycle.Lifecycle
}
val xa: defn.Lifecycle.type = defn.Lifecycle
}
}
https://scastie.scala-lang.org/fcE9r7cwQBSw7m5XwrrR1w - Scastie running on 3.7.1-RC2
Output
java.lang.NoClassDefFoundError: main$package$_$lifecycle$Lifecycle$
at main$package$.f$proxy1$1(main.scala:13)
at main$package$.main(main.scala:4)
at main.main(main.scala:3)
Expectation
Expected not to throw NoClassDefFound error. Removing inline
from simpleInlineWrap
causes the code to work as expected.
NB: encountered when using ScalaTest, which at some point started wrapping all user tests via inline functions
Activity
Fix Scala 3 build by working around a newly found scala/scala3#23279
som-snytt commentedon May 28, 2025
The working case at flatten has
before flatten
The broken proxy has
before flatten
where it should be
lifecycle$2
after lambdalift.Fix regression in 3.0.0: properly dealias nested singletons on Scala 2 (
jchyb commentedon Jun 26, 2025
@som-snytt Apologies for threading on your ground, but the issue seems pretty severe and I think I managed to find the fix (#23432). Thank you for the initial investigation here
Fix Symbol.info remapping in TreeTypeMap (scala#23432)