[IR] update testdata: better support for IrEnumConstructorCall and IrEnumEntry

This commit is contained in:
Zalim Bashorov
2020-11-06 03:23:26 +03:00
committed by teamcityserver
parent 602f0ddbc8
commit 5500b014f5
18 changed files with 352 additions and 70 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ annotation class TestAnnotationClass : Annotation {
enum class TestEnumClass : Enum<TestEnumClass> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnumClass>()
/* InstanceInitializerCall */
}
+72 -13
View File
@@ -1,11 +1,13 @@
enum class TestEnum1 : Enum<TestEnum1> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnum1>()
/* InstanceInitializerCall */
}
TEST1 init = TODO("IrEnumConstructorCall") TEST2 init = TODO("IrEnumConstructorCall")
TEST1 = TestEnum1()
TEST2 = TestEnum1()
fun values(): Array<TestEnum1> /* Synthetic body for ENUM_VALUES */
@@ -15,7 +17,7 @@ enum class TestEnum1 : Enum<TestEnum1> {
enum class TestEnum2 : Enum<TestEnum2> {
private constructor(x: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnum2>()
/* InstanceInitializerCall */
}
@@ -24,7 +26,11 @@ enum class TestEnum2 : Enum<TestEnum2> {
field = x
get
TEST1 init = TODO("IrEnumConstructorCall") TEST2 init = TODO("IrEnumConstructorCall") TEST3 init = TODO("IrEnumConstructorCall")
TEST1 = TestEnum2(x = 1)
TEST2 = TestEnum2(x = 2)
TEST3 = TestEnum2(x = 3)
fun values(): Array<TestEnum2> /* Synthetic body for ENUM_VALUES */
@@ -34,12 +40,26 @@ enum class TestEnum2 : Enum<TestEnum2> {
abstract enum class TestEnum3 : Enum<TestEnum3> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnum3>()
/* InstanceInitializerCall */
}
TEST init = TODO("IrEnumConstructorCall") abstract fun foo()
TEST = TEST()
private enum entry class TEST : TestEnum3 {
private constructor() /* primary */ {
super/*TestEnum3*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
println(message = "Hello, world!")
}
}
abstract fun foo()
fun values(): Array<TestEnum3> /* Synthetic body for ENUM_VALUES */
@@ -49,7 +69,7 @@ abstract enum class TestEnum3 : Enum<TestEnum3> {
abstract enum class TestEnum4 : Enum<TestEnum4> {
private constructor(x: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnum4>()
/* InstanceInitializerCall */
}
@@ -58,7 +78,42 @@ abstract enum class TestEnum4 : Enum<TestEnum4> {
field = x
get
TEST1 init = TODO("IrEnumConstructorCall") TEST2 init = TODO("IrEnumConstructorCall") abstract fun foo()
TEST1 = TEST1()
private enum entry class TEST1 : TestEnum4 {
private constructor() /* primary */ {
super/*TestEnum4*/(x = 1) /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
println(message = TestEnum4)
}
}
TEST2 = TEST2()
private enum entry class TEST2 : TestEnum4 {
private constructor() /* primary */ {
super/*TestEnum4*/(x = 2) /*~> Unit */
/* InstanceInitializerCall */
}
val z: Int
get
init {
#z = <this>.<get-x>()
}
override fun foo() {
println(message = TestEnum4)
}
}
abstract fun foo()
fun values(): Array<TestEnum4> /* Synthetic body for ENUM_VALUES */
@@ -68,7 +123,7 @@ abstract enum class TestEnum4 : Enum<TestEnum4> {
enum class TestEnum5 : Enum<TestEnum5> {
private constructor(x: Int = 0) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnum5>()
/* InstanceInitializerCall */
}
@@ -77,7 +132,11 @@ enum class TestEnum5 : Enum<TestEnum5> {
field = x
get
TEST1 init = TODO("IrEnumConstructorCall") TEST2 init = TODO("IrEnumConstructorCall") TEST3 init = TODO("IrEnumConstructorCall")
TEST1 = TestEnum5()
TEST2 = TestEnum5()
TEST3 = TestEnum5(x = 0)
fun values(): Array<TestEnum5> /* Synthetic body for ENUM_VALUES */
@@ -91,7 +150,7 @@ fun f(): Int {
enum class TestEnum6 : Enum<TestEnum6> {
private constructor(x: Int, y: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestEnum6>()
/* InstanceInitializerCall */
}
@@ -104,10 +163,10 @@ enum class TestEnum6 : Enum<TestEnum6> {
field = y
get
TEST init = { // BLOCK
TEST = { // BLOCK
val tmp0_y: Int = f()
val tmp1_x: Int = f()
TODO("IrEnumConstructorCall")
TestEnum6(x = tmp1_x, y = tmp0_y)
}
fun values(): Array<TestEnum6> /* Synthetic body for ENUM_VALUES */
+65 -14
View File
@@ -1,11 +1,11 @@
enum class TestFinalEnum1 : Enum<TestFinalEnum1> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestFinalEnum1>()
/* InstanceInitializerCall */
}
X1 init = TODO("IrEnumConstructorCall")
X1 = TestFinalEnum1()
fun values(): Array<TestFinalEnum1> /* Synthetic body for ENUM_VALUES */
@@ -15,7 +15,7 @@ enum class TestFinalEnum1 : Enum<TestFinalEnum1> {
enum class TestFinalEnum2 : Enum<TestFinalEnum2> {
private constructor(x: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestFinalEnum2>()
/* InstanceInitializerCall */
}
@@ -24,7 +24,7 @@ enum class TestFinalEnum2 : Enum<TestFinalEnum2> {
field = x
get
X1 init = TODO("IrEnumConstructorCall")
X1 = TestFinalEnum2(x = 1)
fun values(): Array<TestFinalEnum2> /* Synthetic body for ENUM_VALUES */
@@ -34,12 +34,14 @@ enum class TestFinalEnum2 : Enum<TestFinalEnum2> {
enum class TestFinalEnum3 : Enum<TestFinalEnum3> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestFinalEnum3>()
/* InstanceInitializerCall */
}
X1 init = TODO("IrEnumConstructorCall") fun doStuff() {
X1 = TestFinalEnum3()
fun doStuff() {
}
fun values(): Array<TestFinalEnum3> /* Synthetic body for ENUM_VALUES */
@@ -50,12 +52,24 @@ enum class TestFinalEnum3 : Enum<TestFinalEnum3> {
open enum class TestOpenEnum1 : Enum<TestOpenEnum1> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestOpenEnum1>()
/* InstanceInitializerCall */
}
X1 init = TODO("IrEnumConstructorCall")
X1 = X1()
private enum entry class X1 : TestOpenEnum1 {
private constructor() /* primary */ {
super/*TestOpenEnum1*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun toString(): String {
return "X1"
}
}
fun values(): Array<TestOpenEnum1> /* Synthetic body for ENUM_VALUES */
@@ -65,12 +79,25 @@ open enum class TestOpenEnum1 : Enum<TestOpenEnum1> {
open enum class TestOpenEnum2 : Enum<TestOpenEnum2> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestOpenEnum2>()
/* InstanceInitializerCall */
}
X1 init = TODO("IrEnumConstructorCall") open fun foo() {
X1 = X1()
private enum entry class X1 : TestOpenEnum2 {
private constructor() /* primary */ {
super/*TestOpenEnum2*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
}
}
open fun foo() {
}
fun values(): Array<TestOpenEnum2> /* Synthetic body for ENUM_VALUES */
@@ -81,12 +108,25 @@ open enum class TestOpenEnum2 : Enum<TestOpenEnum2> {
abstract enum class TestAbstractEnum1 : Enum<TestAbstractEnum1> {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestAbstractEnum1>()
/* InstanceInitializerCall */
}
X1 init = TODO("IrEnumConstructorCall") abstract fun foo()
X1 = X1()
private enum entry class X1 : TestAbstractEnum1 {
private constructor() /* primary */ {
super/*TestAbstractEnum1*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
}
}
abstract fun foo()
fun values(): Array<TestAbstractEnum1> /* Synthetic body for ENUM_VALUES */
@@ -101,12 +141,23 @@ interface IFoo {
abstract enum class TestAbstractEnum2 : Enum<TestAbstractEnum2>, IFoo {
private constructor() /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<TestAbstractEnum2>()
/* InstanceInitializerCall */
}
X1 init = TODO("IrEnumConstructorCall")
X1 = X1()
private enum entry class X1 : TestAbstractEnum2 {
private constructor() /* primary */ {
super/*TestAbstractEnum2*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
}
}
fun values(): Array<TestAbstractEnum2> /* Synthetic body for ENUM_VALUES */
@@ -1,5 +1,23 @@
open enum class A : Enum<A> {
X init = TODO("IrEnumConstructorCall") Y init = TODO("IrEnumConstructorCall") Z init = TODO("IrEnumConstructorCall") val prop1: String
X = A(arg = "asd")
Y = Y()
private enum entry class Y : A {
private constructor() /* primary */ {
super/*A*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun f(): String {
return super.f().plus(other = "#Y")
}
}
Z = A(x = 5)
val prop1: String
get
val prop2: String
@@ -12,14 +30,14 @@ open enum class A : Enum<A> {
set
private constructor(arg: String) {
TODO("IrEnumConstructorCall")
super/*Enum*/<A>()
/* InstanceInitializerCall */
#prop1 = arg
}
private constructor() {
TODO("IrEnumConstructorCall")
super/*Enum*/<A>()
/* InstanceInitializerCall */
#prop1 = "default"
@@ -1,6 +1,6 @@
enum class Test0 : Enum<Test0> {
private constructor(x: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<Test0>()
/* InstanceInitializerCall */
}
@@ -9,7 +9,9 @@ enum class Test0 : Enum<Test0> {
field = x
get
ZERO init = TODO("IrEnumConstructorCall") private constructor() {
ZERO = Test0()
private constructor() {
this/*Test0*/(x = 0)
}
@@ -21,7 +23,7 @@ enum class Test0 : Enum<Test0> {
enum class Test1 : Enum<Test1> {
private constructor(x: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<Test1>()
/* InstanceInitializerCall */
}
@@ -30,7 +32,11 @@ enum class Test1 : Enum<Test1> {
field = x
get
ZERO init = TODO("IrEnumConstructorCall") ONE init = TODO("IrEnumConstructorCall") private constructor() {
ZERO = Test1()
ONE = Test1(x = 1)
private constructor() {
this/*Test1*/(x = 0)
}
@@ -42,7 +48,7 @@ enum class Test1 : Enum<Test1> {
abstract enum class Test2 : Enum<Test2> {
private constructor(x: Int) /* primary */ {
TODO("IrEnumConstructorCall")
super/*Enum*/<Test2>()
/* InstanceInitializerCall */
}
@@ -51,7 +57,35 @@ abstract enum class Test2 : Enum<Test2> {
field = x
get
ZERO init = TODO("IrEnumConstructorCall") ONE init = TODO("IrEnumConstructorCall") private constructor() {
ZERO = ZERO()
private enum entry class ZERO : Test2 {
private constructor() /* primary */ {
super/*Test2*/() /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
println(message = "ZERO")
}
}
ONE = ONE()
private enum entry class ONE : Test2 {
private constructor() /* primary */ {
super/*Test2*/(x = 1) /*~> Unit */
/* InstanceInitializerCall */
}
override fun foo() {
println(message = "ONE")
}
}
private constructor() {
this/*Test2*/(x = 0)
}