Is it possible to disable inlining of value classes in Kotlin?

330 Views Asked by At

Goal

I would like to globally disable inlining of @JvmInline value class classes via a compiler flag or something similar. I would want to do this when running unit tests but not in production.

Motivation

I would like to use mockk with value classes.

I want to write a unit test that looks like this:

  @JvmInline
  value class Example(private val inner: Int)

  class ExampleProvider {
    fun getExample(): Example = TODO()
  }

  @Test
  fun testMethod() {
    val mockExample = mockk<Example>()
    val mockProvider = mockk<ExampleProvider> {
      every { getExample() } returns mockExample
    }
    Assert.assertEquals(mockExample, mockProvider.getExample())
  }

This code fails with the following exception:

no answer found for: Example(#4).unbox-impl()

I think that if I were able to disable class inlining that this would no longer be an issue.

0

There are 0 best solutions below