| // WITH_STDLIB | |
| // WORKS_WHEN_VALUE_CLASS | |
| OPTIONAL_JVM_INLINE_ANNOTATION | |
| value class Augmented<T: Int>(val x: T) { | |
| override fun toString(): String = (x + 1).toString() | |
| } | |
| OPTIONAL_JVM_INLINE_ANNOTATION | |
| value class AsAny<T: Any>(val a: T) { | |
| override fun toString(): String = "AsAny: $a" | |
| } | |
| data class AugmentedAndAsAny(val a: Augmented<Int>, val b: AsAny<Int>) | |
| fun box(): String { | |
| val a = Augmented(0) | |
| val single = "$a" | |
| if (single != "1") return "Fail 1: $single" | |
| val asAny = AsAny(42) | |
| val asAnyString = "$asAny" | |
| if (asAnyString != "AsAny: 42") return "Fail 2: $asAnyString" | |
| val b = Augmented(1) | |
| val two = "$a and $b" | |
| if (two != "1 and 2") return "Fail 3: $two" | |
| val d = AugmentedAndAsAny(a, asAny) | |
| if (d.toString() != "AugmentedAndAsAny(a=1, b=AsAny: 42)") return "Fail 4: $d" | |
| return "OK" | |
| } |