// WITH_STDLIB // WORKS_WHEN_VALUE_CLASS // LANGUAGE: +ValueClasses, +GenericInlineClassParameter interface IFoo> { fun T.foo(): String = bar() fun bar(): String } OPTIONAL_JVM_INLINE_ANNOTATION value class Z(val x: T) : IFoo> { override fun bar(): String = "OK" } OPTIONAL_JVM_INLINE_ANNOTATION value class L(val x: T) : IFoo> { override fun bar(): String = "OK" } OPTIONAL_JVM_INLINE_ANNOTATION value class S(val x: T) : IFoo> { override fun bar(): String = x } fun Z.testZ() { if (Z(42).foo() != "OK") throw AssertionError() } fun L.testL() { if (L(4L).foo() != "OK") throw AssertionError() } fun S.testS() { if (S("OK").foo() != "OK") throw AssertionError() } fun box(): String { Z(42).testZ() L(4L).testL() S("").testS() return "OK" }