| // WITH_STDLIB | |
| // WORKS_WHEN_VALUE_CLASS | |
| OPTIONAL_JVM_INLINE_ANNOTATION | |
| value class WrappingInt<T: Int>(val value: T) { | |
| operator fun inc(): WrappingInt<T> = plus(1) | |
| operator fun plus(num: Int): WrappingInt<T> = WrappingInt(((value + num) and 0xFFFF) as T) | |
| } | |
| fun box(): String { | |
| var x = WrappingInt(65535) | |
| x++ | |
| if (x.value != 0) throw AssertionError("x++: ${x.value}") | |
| var y = WrappingInt(65535) | |
| ++y | |
| if (y.value != 0) throw AssertionError("++y: ${y.value}") | |
| return "OK" | |
| } |