[FE 1.0] Prohibit access to members of companion of enum from enum entry initializer

^KT-49461 Fixed
^KT-49110
This commit is contained in:
Dmitriy Novozhilov
2021-10-28 15:40:15 +03:00
committed by TeamCityServer
parent 4f0c3c3c0d
commit 58889a2b5c
14 changed files with 422 additions and 6 deletions
@@ -0,0 +1,39 @@
// LANGUAGE: -ProhibitAccessToEnumCompanionMembersInEnumConstructorCall
// ISSUE: KT-49110
enum class SomeEnum(val x: Int) {
A(<!UNINITIALIZED_ENUM_COMPANION!>companionFun<!>().length),// UNINITIALIZED_ENUM_COMPANION
B(<!UNINITIALIZED_VARIABLE!>companionProp<!>.length), // UNINITIALIZED_VARIABLE
C(SomeEnum.<!UNINITIALIZED_ENUM_COMPANION!>companionFun<!>().length),
D(<!UNINITIALIZED_VARIABLE!>SomeEnum.companionProp<!>.length),
E(SomeEnum.<!UNINITIALIZED_ENUM_COMPANION!>Companion<!>.companionFun().length),
F(<!UNINITIALIZED_VARIABLE!>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