| // WITH_STDLIB |
| // TARGET_BACKEND: JVM_IR |
| // LANGUAGE: +ValueClasses |
| // CHECK_BYTECODE_LISTING |
| // FIR_IDENTICAL |
| |
| @JvmInline |
| value class DPoint(val x: Double, val y: Double) |
| |
| class PointBox(var value: DPoint) |
| |
| fun box(): String { |
| var p = DPoint(1.0, 2.0) |
| try { |
| p = DPoint(3.0, error("Failure")) |
| } catch (_: Exception) { |
| } |
| if (p != DPoint(1.0, 2.0)) { |
| return "Partially reassigned variable" |
| } |
| |
| val box = PointBox(p) |
| |
| try { |
| box.value = DPoint(3.0, error("Failure")) |
| } catch (_: Exception) { |
| } |
| |
| if (box.value != DPoint(1.0, 2.0)) { |
| return "Partially reassigned field" |
| } |
| |
| return "OK" |
| } |