ee9a174c1f
Do not report an error on enum entry without initializer if all parameters have default values (error is still reported if there is no such constructor, or if the constructor call is ambiguous). Record resolved call on KtEnumEntry. NB is the enum entry has a corresponding subclass, we still have to generate the "default" constructor call, because FE doesn't know about the platform-specific representation of that class and its constructors. See also KT-14097, KT-15900
146 lines
7.4 KiB
Plaintext
Vendored
146 lines
7.4 KiB
Plaintext
Vendored
FILE /enum.kt
|
|
CLASS ENUM_CLASS TestEnum1
|
|
CONSTRUCTOR private constructor TestEnum1()
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor Enum(String, Int)'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TestEnum1'
|
|
ENUM_ENTRY enum entry TEST1
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum1()'
|
|
ENUM_ENTRY enum entry TEST2
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum1()'
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun values(): kotlin.Array<TestEnum1>
|
|
SYNTHETIC_BODY kind=ENUM_VALUES
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun valueOf(value: kotlin.String): TestEnum1
|
|
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
|
CLASS ENUM_CLASS TestEnum2
|
|
CONSTRUCTOR private constructor TestEnum2(x: kotlin.Int)
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor Enum(String, Int)'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TestEnum2'
|
|
PROPERTY public final val x: kotlin.Int
|
|
FIELD PROPERTY_BACKING_FIELD public final val x: kotlin.Int
|
|
EXPRESSION_BODY
|
|
GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
|
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): kotlin.Int
|
|
BLOCK_BODY
|
|
RETURN type=kotlin.Nothing from='<get-x>(): Int'
|
|
GET_FIELD 'x: Int' type=kotlin.Int origin=null
|
|
receiver: GET_VAR '<receiver: TestEnum2>' type=TestEnum2 origin=null
|
|
ENUM_ENTRY enum entry TEST1
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum2(Int)'
|
|
x: CONST Int type=kotlin.Int value='1'
|
|
ENUM_ENTRY enum entry TEST2
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum2(Int)'
|
|
x: CONST Int type=kotlin.Int value='2'
|
|
ENUM_ENTRY enum entry TEST3
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum2(Int)'
|
|
x: CONST Int type=kotlin.Int value='3'
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun values(): kotlin.Array<TestEnum2>
|
|
SYNTHETIC_BODY kind=ENUM_VALUES
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun valueOf(value: kotlin.String): TestEnum2
|
|
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
|
CLASS ENUM_CLASS TestEnum3
|
|
CONSTRUCTOR private constructor TestEnum3()
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor Enum(String, Int)'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TestEnum3'
|
|
ENUM_ENTRY enum entry TEST
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TEST()'
|
|
class: CLASS ENUM_ENTRY TEST
|
|
CONSTRUCTOR private constructor TEST()
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor TestEnum3()'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TEST'
|
|
FUN public open override fun foo(): kotlin.Unit
|
|
BLOCK_BODY
|
|
CALL 'println(Any?): Unit' type=kotlin.Unit origin=null
|
|
message: CONST String type=kotlin.String value='Hello, world!'
|
|
FUN public abstract fun foo(): kotlin.Unit
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun values(): kotlin.Array<TestEnum3>
|
|
SYNTHETIC_BODY kind=ENUM_VALUES
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun valueOf(value: kotlin.String): TestEnum3
|
|
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
|
CLASS ENUM_CLASS TestEnum4
|
|
CONSTRUCTOR private constructor TestEnum4(x: kotlin.Int)
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor Enum(String, Int)'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TestEnum4'
|
|
PROPERTY public final val x: kotlin.Int
|
|
FIELD PROPERTY_BACKING_FIELD public final val x: kotlin.Int
|
|
EXPRESSION_BODY
|
|
GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
|
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): kotlin.Int
|
|
BLOCK_BODY
|
|
RETURN type=kotlin.Nothing from='<get-x>(): Int'
|
|
GET_FIELD 'x: Int' type=kotlin.Int origin=null
|
|
receiver: GET_VAR '<receiver: TestEnum4>' type=TestEnum4 origin=null
|
|
ENUM_ENTRY enum entry TEST1
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TEST1()'
|
|
class: CLASS ENUM_ENTRY TEST1
|
|
CONSTRUCTOR private constructor TEST1()
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor TestEnum4(Int)'
|
|
x: CONST Int type=kotlin.Int value='1'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TEST1'
|
|
FUN public open override fun foo(): kotlin.Unit
|
|
BLOCK_BODY
|
|
CALL 'println(Any?): Unit' type=kotlin.Unit origin=null
|
|
message: GET_ENUM 'TEST1' type=TestEnum4
|
|
ENUM_ENTRY enum entry TEST2
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TEST2()'
|
|
class: CLASS ENUM_ENTRY TEST2
|
|
CONSTRUCTOR private constructor TEST2()
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor TestEnum4(Int)'
|
|
x: CONST Int type=kotlin.Int value='2'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TEST2'
|
|
PROPERTY public final val z: kotlin.Int
|
|
FIELD PROPERTY_BACKING_FIELD public final val z: kotlin.Int
|
|
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-z>(): kotlin.Int
|
|
BLOCK_BODY
|
|
RETURN type=kotlin.Nothing from='<get-z>(): Int'
|
|
GET_FIELD 'z: Int' type=kotlin.Int origin=null
|
|
receiver: GET_VAR '<receiver: TEST2>' type=TestEnum4.TEST2 origin=null
|
|
ANONYMOUS_INITIALIZER TEST2
|
|
BLOCK_BODY
|
|
SET_FIELD 'z: Int' type=kotlin.Unit origin=null
|
|
receiver: GET_VAR '<receiver: TEST2>' type=TestEnum4.TEST2 origin=null
|
|
value: CALL '<get-x>(): Int' type=kotlin.Int origin=GET_PROPERTY
|
|
$this: GET_VAR '<receiver: TEST2>' type=TestEnum4.TEST2 origin=null
|
|
FUN public open override fun foo(): kotlin.Unit
|
|
BLOCK_BODY
|
|
CALL 'println(Any?): Unit' type=kotlin.Unit origin=null
|
|
message: GET_ENUM 'TEST2' type=TestEnum4
|
|
FUN public abstract fun foo(): kotlin.Unit
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun values(): kotlin.Array<TestEnum4>
|
|
SYNTHETIC_BODY kind=ENUM_VALUES
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun valueOf(value: kotlin.String): TestEnum4
|
|
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
|
CLASS ENUM_CLASS TestEnum5
|
|
CONSTRUCTOR private constructor TestEnum5(x: kotlin.Int = ...)
|
|
x: EXPRESSION_BODY
|
|
CONST Int type=kotlin.Int value='0'
|
|
BLOCK_BODY
|
|
ENUM_CONSTRUCTOR_CALL 'constructor Enum(String, Int)'
|
|
INSTANCE_INITIALIZER_CALL classDescriptor='TestEnum5'
|
|
PROPERTY public final val x: kotlin.Int
|
|
FIELD PROPERTY_BACKING_FIELD public final val x: kotlin.Int
|
|
EXPRESSION_BODY
|
|
GET_VAR 'value-parameter x: Int = ...' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
|
FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x>(): kotlin.Int
|
|
BLOCK_BODY
|
|
RETURN type=kotlin.Nothing from='<get-x>(): Int'
|
|
GET_FIELD 'x: Int' type=kotlin.Int origin=null
|
|
receiver: GET_VAR '<receiver: TestEnum5>' type=TestEnum5 origin=null
|
|
ENUM_ENTRY enum entry TEST1
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum5(Int = ...)'
|
|
ENUM_ENTRY enum entry TEST2
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum5(Int = ...)'
|
|
ENUM_ENTRY enum entry TEST3
|
|
init: ENUM_CONSTRUCTOR_CALL 'constructor TestEnum5(Int = ...)'
|
|
x: CONST Int type=kotlin.Int value='0'
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun values(): kotlin.Array<TestEnum5>
|
|
SYNTHETIC_BODY kind=ENUM_VALUES
|
|
FUN ENUM_CLASS_SPECIAL_MEMBER public final fun valueOf(value: kotlin.String): TestEnum5
|
|
SYNTHETIC_BODY kind=ENUM_VALUEOF
|