381 lines
12 KiB
Kotlin
Vendored
381 lines
12 KiB
Kotlin
Vendored
// CHECK_BYTECODE_LISTING
|
|
// FIR_IDENTICAL
|
|
// WITH_STDLIB
|
|
// TARGET_BACKEND: JVM_IR
|
|
// LANGUAGE: +ValueClasses
|
|
// JVM_ABI_K1_K2_DIFF: KT-63984
|
|
|
|
// MODULE: dependency
|
|
// FILE: dependency.kt
|
|
|
|
@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)
|
|
// FILE: main.kt
|
|
|
|
@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"
|
|
}
|