| // CHECK_BYTECODE_LISTING |
| // FIR_IDENTICAL |
| // WITH_STDLIB |
| // TARGET_BACKEND: JVM_IR |
| // LANGUAGE: +ValueClasses |
| |
| // MODULE: dependency |
| @JvmInline |
| value class MfvcDependency(val x: Int, val y: Int) { |
| val z: Int |
| get() = 1 |
| val t: MfvcDependency |
| get() = MfvcDependency(10, 20) |
| companion object { |
| var x: Int = -100 |
| val y: Int |
| get() = 1 |
| var z: MfvcDependency = MfvcDependency(10, 20) |
| val t: MfvcDependency |
| get() = MfvcDependency(10, 20) |
| |
| @JvmStatic |
| var xStatic: Int = -100 |
| @JvmStatic |
| val yStatic: Int |
| get() = 1 |
| @JvmStatic |
| var zStatic: MfvcDependency = MfvcDependency(10, 20) |
| @JvmStatic |
| val tStatic: MfvcDependency |
| get() = MfvcDependency(10, 20) |
| } |
| } |
| class RegularDependency { |
| var x: Int = -100 |
| val y: Int |
| get() = 1 |
| var z: MfvcDependency = MfvcDependency(10, 20) |
| val t: MfvcDependency |
| get() = MfvcDependency(10, 20) |
| |
| companion object { |
| var x: Int = -100 |
| val y: Int |
| get() = 1 |
| var z: MfvcDependency = MfvcDependency(10, 20) |
| val t: MfvcDependency |
| get() = MfvcDependency(10, 20) |
| |
| @JvmStatic |
| var xStatic: Int = -100 |
| @JvmStatic |
| val yStatic: Int |
| get() = 1 |
| @JvmStatic |
| var zStatic: MfvcDependency = MfvcDependency(10, 20) |
| @JvmStatic |
| val tStatic: MfvcDependency |
| get() = MfvcDependency(10, 20) |
| } |
| } |
| |
| // MODULE: main(dependency) |
| |
| @JvmInline |
| value class Public(val x: Int, val y: Int) { |
| companion object { |
| var x: Int = -100 |
| val y: Int |
| get() = 1 |
| var z: Public = Public(10, 20) |
| val t: Public |
| get() = Public(10, 20) |
| } |
| } |
| |
| @JvmInline |
| value class Internal(internal val x: Int, internal val y: Int) { |
| companion object { |
| @JvmStatic |
| var x: Int = -100 |
| |
| @JvmStatic |
| val y: Int |
| get() = 1 |
| var z: Internal = Internal(10, 20) |
| |
| @JvmStatic |
| val t: Internal |
| get() = Internal(10, 20) |
| } |
| } |
| |
| @JvmInline |
| value class Private(private val x: Int, private val y: Int) |
| |
| @JvmInline |
| value class PublicPublic(val value: Public) |
| |
| @JvmInline |
| value class InternalPublic(internal val value: Public) |
| |
| @JvmInline |
| value class PrivatePublic(private val value: Public) |
| |
| @JvmInline |
| value class PublicInternal(val value: Internal) |
| |
| @JvmInline |
| value class InternalInternal(internal val value: Internal) |
| |
| @JvmInline |
| value class PrivateInternal(private val value: Internal) |
| |
| @JvmInline |
| value class PublicPrivate(val value: Private) |
| |
| @JvmInline |
| value class InternalPrivate(internal val value: Private) |
| |
| @JvmInline |
| value class PrivatePrivate(private val value: Private) |
| |
| class Regular { |
| var x1: Public = Public(1, 2) |
| internal var x2: Public = Public(3, 4) |
| private var x3: Public = Public(5, 6) |
| |
| var x4: Public = Public(7, 8) |
| private set |
| internal var x5: Public = Public(9, 10) |
| private set |
| |
| var x6: Public = Public(11, 12) |
| internal set |
| |
| |
| var y1: Internal = Internal(13, 14) |
| internal var y2: Internal = Internal(15, 16) |
| private var y3: Internal = Internal(17, 18) |
| |
| var y4: Internal = Internal(19, 20) |
| private set |
| internal var y5: Internal = Internal(21, 22) |
| private set |
| |
| var y6: Internal = Internal(23, 24) |
| internal set |
| |
| |
| var z1: Private = Private(25, 26) |
| internal var z2: Private = Private(27, 28) |
| private var z3: Private = Private(29, 30) |
| |
| var z4: Private = Private(31, 32) |
| private set |
| internal var z5: Private = Private(33, 34) |
| private set |
| |
| var z6: Private = Private(35, 36) |
| internal set |
| |
| companion object { |
| var staticX1: Public = Public(-1, -2) |
| internal var staticX2: Public = Public(-3, -4) |
| private var staticX3: Public = Public(-5, -6) |
| |
| var staticX4: Public = Public(-7, -8) |
| private set |
| internal var staticX5: Public = Public(-9, -10) |
| private set |
| |
| var staticX6: Public = Public(-11, -12) |
| internal set |
| |
| |
| var staticY1: Internal = Internal(-13, -14) |
| internal var staticY2: Internal = Internal(-15, -16) |
| private var staticY3: Internal = Internal(-17, -18) |
| |
| var staticY4: Internal = Internal(-19, -20) |
| private set |
| internal var staticY5: Internal = Internal(-21, -22) |
| private set |
| |
| var staticY6: Internal = Internal(-23, -24) |
| internal set |
| |
| |
| var staticZ1: Private = Private(-25, -26) |
| internal var staticZ2: Private = Private(-27, -28) |
| private var staticZ3: Private = Private(-29, -30) |
| |
| var staticZ4: Private = Private(-31, -32) |
| private set |
| internal var staticZ5: Private = Private(-33, -34) |
| private set |
| |
| var staticZ6: Private = Private(-35, -36) |
| internal set |
| |
| @JvmStatic |
| var jvmStaticX1: Public = Public(-1, -2) |
| |
| @JvmStatic |
| internal var jvmStaticX2: Public = Public(-3, -4) |
| |
| @JvmStatic |
| private var jvmStaticX3: Public = Public(-5, -6) |
| |
| @JvmStatic |
| var jvmStaticX4: Public = Public(-7, -8) |
| private set |
| |
| @JvmStatic |
| internal var jvmStaticX5: Public = Public(-9, -10) |
| private set |
| |
| @JvmStatic |
| var jvmStaticX6: Public = Public(-11, -12) |
| internal set |
| |
| |
| @JvmStatic |
| var jvmStaticY1: Internal = Internal(-13, -14) |
| |
| @JvmStatic |
| internal var jvmStaticY2: Internal = Internal(-15, -16) |
| |
| @JvmStatic |
| private var jvmStaticY3: Internal = Internal(-17, -18) |
| |
| @JvmStatic |
| var jvmStaticY4: Internal = Internal(-19, -20) |
| private set |
| |
| @JvmStatic |
| internal var jvmStaticY5: Internal = Internal(-21, -22) |
| private set |
| |
| @JvmStatic |
| var jvmStaticY6: Internal = Internal(-23, -24) |
| internal set |
| |
| |
| @JvmStatic |
| var jvmStaticZ1: Private = Private(-25, -26) |
| |
| @JvmStatic |
| internal var jvmStaticZ2: Private = Private(-27, -28) |
| |
| @JvmStatic |
| private var jvmStaticZ3: Private = Private(-29, -30) |
| |
| @JvmStatic |
| var jvmStaticZ4: Private = Private(-31, -32) |
| private set |
| |
| @JvmStatic |
| internal var jvmStaticZ5: Private = Private(-33, -34) |
| private set |
| |
| @JvmStatic |
| var jvmStaticZ6: Private = Private(-35, -36) |
| internal set |
| |
| } |
| |
| fun callAll() { |
| x1; x2; x3; x4; x5; x6 |
| x1.x; x1.y; x2.x; x2.y; x3.x; x3.y; x4.x; x4.y; x5.x; x5.y; x6.x; x6.y |
| x1 = x1; x2 = x2; x3 = x3; x4 = x4; x5 = x5; x6 = x6 |
| |
| y1; y2; y3; y4; y5; y6 |
| y1.x; y1.y; y2.x; y2.y; y3.x; y3.y; y4.x; y4.y; y5.x; y5.y; y6.x; y6.y |
| y1 = y1; y2 = y2; y3 = y3; y4 = y4; y5 = y5; y6 = y6 |
| |
| z1; z2; z3; z4; z5; z6 |
| z1 = z1; z2 = z2; z3 = z3; z4 = z4; z5 = z5; z6 = z6 |
| |
| |
| staticX1; staticX2; staticX3; staticX4; staticX5; staticX6 |
| staticX1.x; staticX1.y; staticX2.x; staticX2.y; staticX3.x; staticX3.y; staticX4.x; staticX4.y; staticX5.x; staticX5.y; staticX6.x; staticX6.y |
| staticX1 = staticX1; staticX2 = staticX2; staticX3 = staticX3; staticX4 = staticX4; staticX5 = staticX5; staticX6 = staticX6 |
| |
| staticY1; staticY2; staticY3; staticY4; staticY5; staticY6 |
| staticY1.x; staticY1.y; staticY2.x; staticY2.y; staticY3.x; staticY3.y; staticY4.x; staticY4.y; staticY5.x; staticY5.y; staticY6.x; staticY6.y |
| staticY1 = staticY1; staticY2 = staticY2; staticY3 = staticY3; staticY4 = staticY4; staticY5 = staticY5; staticY6 = staticY6 |
| |
| staticZ1; staticZ2; staticZ3; staticZ4; staticZ5; staticZ6 |
| staticZ1 = staticZ1; staticZ2 = staticZ2; staticZ3 = staticZ3; staticZ4 = staticZ4; staticZ5 = staticZ5; staticZ6 = staticZ6 |
| |
| |
| jvmStaticX1; jvmStaticX2; jvmStaticX3; jvmStaticX4; jvmStaticX5; jvmStaticX6 |
| jvmStaticX1.x; jvmStaticX1.y; jvmStaticX2.x; jvmStaticX2.y; jvmStaticX3.x; jvmStaticX3.y; jvmStaticX4.x; jvmStaticX4.y; jvmStaticX5.x; jvmStaticX5.y; jvmStaticX6.x; jvmStaticX6.y |
| jvmStaticX1 = jvmStaticX1; jvmStaticX2 = jvmStaticX2; jvmStaticX3 = jvmStaticX3; jvmStaticX4 = jvmStaticX4; jvmStaticX5 = |
| jvmStaticX5; jvmStaticX6 = jvmStaticX6 |
| |
| jvmStaticY1; jvmStaticY2; jvmStaticY3; jvmStaticY4; jvmStaticY5; jvmStaticY6 |
| jvmStaticY1.x; jvmStaticY1.y; jvmStaticY2.x; jvmStaticY2.y; jvmStaticY3.x; jvmStaticY3.y; jvmStaticY4.x; jvmStaticY4.y; jvmStaticY5.x; jvmStaticY5.y; jvmStaticY6.x; jvmStaticY6.y |
| jvmStaticY1 = jvmStaticY1; jvmStaticY2 = jvmStaticY2; jvmStaticY3 = jvmStaticY3; jvmStaticY4 = jvmStaticY4; jvmStaticY5 = |
| jvmStaticY5; jvmStaticY6 = jvmStaticY6 |
| |
| jvmStaticZ1; jvmStaticZ2; jvmStaticZ3; jvmStaticZ4; jvmStaticZ5; jvmStaticZ6 |
| jvmStaticZ1 = jvmStaticZ1; jvmStaticZ2 = jvmStaticZ2; jvmStaticZ3 = jvmStaticZ3; jvmStaticZ4 = jvmStaticZ4; jvmStaticZ5 = |
| jvmStaticZ5; jvmStaticZ6 = jvmStaticZ6 |
| } |
| } |
| |
| fun box(): String { |
| val r = Regular() |
| r.apply { |
| callAll() |
| |
| |
| x1; x2; x4; x5; x6 |
| x1.x; x1.y; x2.x; x2.y; x4.x; x4.y; x5.x; x5.y; x6.x; x6.y |
| x1 = x1; x2 = x2; x6 = x6 |
| |
| y1; y2; y4; y5; y6 |
| y1.x; y1.y; y2.x; y2.y; y4.x; y4.y; y5.x; y5.y; y6.x; y6.y |
| y1 = y1; y2 = y2; y6 = y6 |
| |
| z1; z2; z4; z5; z6 |
| z1 = z1; z2 = z2; z6 = z6 |
| } |
| |
| Regular.Companion.apply { |
| staticX1; staticX2; staticX4; staticX5; staticX6 |
| staticX1.x; staticX1.y; staticX2.x; staticX2.y; staticX4.x; staticX4.y; staticX5.x; staticX5.y; staticX6.x; staticX6.y |
| staticX1 = staticX1; staticX2 = staticX2; staticX6 = staticX6 |
| |
| staticY1; staticY2; staticY4; staticY5; staticY6 |
| staticY1.x; staticY1.y; staticY2.x; staticY2.y; staticY4.x; staticY4.y; staticY5.x; staticY5.y; staticY6.x; staticY6.y |
| staticY1 = staticY1; staticY2 = staticY2; staticY6 = staticY6 |
| |
| staticZ1; staticZ2; staticZ4; staticZ5; staticZ6 |
| staticZ1 = staticZ1; staticZ2 = staticZ2; staticZ6 = staticZ6 |
| |
| |
| jvmStaticX1; jvmStaticX2; jvmStaticX4; jvmStaticX5; jvmStaticX6 |
| jvmStaticX1.x; jvmStaticX1.y; jvmStaticX2.x; jvmStaticX2.y; jvmStaticX4.x; jvmStaticX4.y; jvmStaticX5.x; jvmStaticX5.y; jvmStaticX6.x; jvmStaticX6.y |
| jvmStaticX1 = jvmStaticX1; jvmStaticX2 = jvmStaticX2; jvmStaticX6 = jvmStaticX6 |
| |
| jvmStaticY1; jvmStaticY2; jvmStaticY4; jvmStaticY5; jvmStaticY6 |
| jvmStaticY1.x; jvmStaticY1.y; jvmStaticY2.x; jvmStaticY2.y; jvmStaticY4.x; jvmStaticY4.y; jvmStaticY5.x; jvmStaticY5.y; jvmStaticY6.x; jvmStaticY6.y |
| jvmStaticY1 = jvmStaticY1; jvmStaticY2 = jvmStaticY2; jvmStaticY6 = jvmStaticY6 |
| |
| jvmStaticZ1; jvmStaticZ2; jvmStaticZ4; jvmStaticZ5; jvmStaticZ6 |
| jvmStaticZ1 = jvmStaticZ1; jvmStaticZ2 = jvmStaticZ2; jvmStaticZ6 = jvmStaticZ6 |
| } |
| |
| require(MfvcDependency.x == -100) |
| require(MfvcDependency.xStatic == -100) |
| require(MfvcDependency.y == 1) |
| require(MfvcDependency.yStatic == 1) |
| require(MfvcDependency.z == MfvcDependency(10, 20)) |
| require(MfvcDependency.zStatic == MfvcDependency(10, 20)) |
| require(MfvcDependency(1, 2).x == 1) |
| require(MfvcDependency(1, 2).y == 2) |
| require(MfvcDependency(1, 2).z == 1) |
| require(MfvcDependency(1, 2).t == MfvcDependency(10, 20)) |
| |
| require(RegularDependency.x == -100) |
| require(RegularDependency.xStatic == -100) |
| require(RegularDependency.y == 1) |
| require(RegularDependency.yStatic == 1) |
| require(RegularDependency.z == MfvcDependency(10, 20)) |
| require(RegularDependency.zStatic == MfvcDependency(10, 20)) |
| require(RegularDependency().x == -100) |
| require(RegularDependency().y == 1) |
| require(RegularDependency().z == MfvcDependency(10, 20)) |
| require(RegularDependency().t == MfvcDependency(10, 20)) |
| |
| return "OK" |
| } |