Skip to content

Trivial inline identity function causes runtime NoClassDefFound error in resulting code #23279

Open
@neko-kai

Description

@neko-kai

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions