Skip to content

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

Closed
@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

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions