| // WITH_STDLIB | |
| // WORKS_WHEN_VALUE_CLASS | |
| OPTIONAL_JVM_INLINE_ANNOTATION | |
| value class InlineNotNullPrimitive<T: Int>(val x: T) | |
| OPTIONAL_JVM_INLINE_ANNOTATION | |
| value class InlineNotNullReference<T: String>(val y: T) | |
| fun <A, T: Int> testNotNullPrimitive(a: Any, b: A, c: InlineNotNullPrimitive<T>, d: InlineNotNullPrimitive<T>?) {} | |
| fun <A, T: String> testNotNullReference(a: Any, b: A, c: InlineNotNullReference<T>, d: InlineNotNullReference<T>?) {} | |
| fun test(a: InlineNotNullPrimitive<Int>, b: InlineNotNullReference<String>) { | |
| testNotNullPrimitive(a, a, a, a) // 3 box | |
| testNotNullReference(b, b, b, b) // 2 box | |
| } | |
| fun box(): String { | |
| val a = InlineNotNullPrimitive(10) | |
| val b = InlineNotNullReference("some") | |
| test(a, b) | |
| return "OK" | |
| } |