blob: e5228e8f9fffe6c7aa0f98e029267248bf8ec61d [file] [log] [blame]
// 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"
}