// LANGUAGE: +ProhibitAccessToEnumCompanionMembersInEnumConstructorCall // ISSUE: KT-49110, KT-54055 enum class SomeEnum(val x: Int) { A(companionFun().length),// UNINITIALIZED_ENUM_COMPANION B(companionProp.length), // UNINITIALIZED_VARIABLE C(SomeEnum.companionFun().length), D(SomeEnum.companionProp.length), E(SomeEnum.Companion.companionFun().length), F(SomeEnum.Companion.companionProp.length); // UNINITIALIZED_VARIABLE companion object { val companionProp = "someString" fun companionFun(): String = "someString" } } enum class OtherEnum(val x: Int) { G(extensionFun().length), // UNINITIALIZED_ENUM_COMPANION H(extensionProp.length), I(OtherEnum.extensionFun().length), J(OtherEnum.extensionProp.length), K(OtherEnum.Companion.extensionFun().length), L(OtherEnum.Companion.extensionProp.length); companion object { val companionProp = "someString" fun companionFun(): String = "someString" } } fun OtherEnum.Companion.extensionFun(): String = companionFun() val OtherEnum.Companion.extensionProp: String get() = companionProp enum class EnumWithLambda(val lambda: () -> Unit) { M({ companionFun().length companionProp.length EnumWithLambda.companionFun().length EnumWithLambda.companionProp.length extensionFun().length extensionProp.length EnumWithLambda.extensionFun().length EnumWithLambda.extensionProp.length }); companion object { val companionProp = "someString" fun companionFun(): String = "someString" } } fun EnumWithLambda.Companion.extensionFun(): String = companionFun() val EnumWithLambda.Companion.extensionProp: String get() = companionProp