[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:
committed by
TeamCityServer
parent
4f0c3c3c0d
commit
58889a2b5c
+2
-2
@@ -1,7 +1,7 @@
|
||||
// SKIP_TXT
|
||||
|
||||
enum class A(val z: Any) {
|
||||
Y(<!UNINITIALIZED_VARIABLE!>x<!>);
|
||||
Y(<!UNINITIALIZED_ENUM_COMPANION_WARNING, UNINITIALIZED_VARIABLE!>x<!>);
|
||||
|
||||
companion object {
|
||||
val x = A.Y.ordinal
|
||||
@@ -9,7 +9,7 @@ enum class A(val z: Any) {
|
||||
}
|
||||
|
||||
enum class B(val z: Any) {
|
||||
Y(B.x);
|
||||
Y(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>B<!>.x);
|
||||
|
||||
companion object {
|
||||
val x = B.Y.ordinal
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ enum class B(val x: Int) {
|
||||
}
|
||||
|
||||
enum class C(val x: Int) {
|
||||
C1(<!UNINITIALIZED_VARIABLE!>SUM<!>),
|
||||
C1(<!UNINITIALIZED_ENUM_COMPANION_WARNING, UNINITIALIZED_VARIABLE!>SUM<!>),
|
||||
C2(1);
|
||||
|
||||
companion object {
|
||||
@@ -32,7 +32,7 @@ enum class Fruit(personal: Int) {
|
||||
|
||||
// Another example from KT-11769
|
||||
enum class EnumCompanion1(val x: Int) {
|
||||
INSTANCE(<!UNINITIALIZED_ENUM_COMPANION!>Companion<!>.foo()),
|
||||
INSTANCE(<!UNINITIALIZED_ENUM_COMPANION, UNINITIALIZED_ENUM_COMPANION_WARNING!>Companion<!>.foo()),
|
||||
ANOTHER(foo());
|
||||
|
||||
companion object {
|
||||
|
||||
Vendored
+40
@@ -0,0 +1,40 @@
|
||||
// LANGUAGE: +ProhibitAccessToEnumCompanionMembersInEnumConstructorCall
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-49110
|
||||
|
||||
enum class SomeEnum(val x: Int) {
|
||||
A(<!UNINITIALIZED_ENUM_COMPANION!>companionFun()<!>.length),// UNINITIALIZED_ENUM_COMPANION
|
||||
B(<!UNINITIALIZED_ENUM_COMPANION, UNINITIALIZED_VARIABLE!>companionProp<!>.length), // UNINITIALIZED_VARIABLE
|
||||
|
||||
C(<!UNINITIALIZED_ENUM_COMPANION!>SomeEnum<!>.companionFun().length),
|
||||
D(<!UNINITIALIZED_ENUM_COMPANION!>SomeEnum<!>.companionProp.length),
|
||||
|
||||
E(SomeEnum.<!UNINITIALIZED_ENUM_COMPANION!>Companion<!>.companionFun().length),
|
||||
F(SomeEnum.<!UNINITIALIZED_ENUM_COMPANION!>Companion<!>.<!UNINITIALIZED_VARIABLE!>companionProp<!>.length); // UNINITIALIZED_VARIABLE
|
||||
|
||||
companion object {
|
||||
val companionProp = "someString"
|
||||
fun companionFun(): String = "someString"
|
||||
}
|
||||
}
|
||||
|
||||
enum class OtherEnum(val x: Int) {
|
||||
G(<!UNINITIALIZED_ENUM_COMPANION!>extensionFun()<!>.length), // UNINITIALIZED_ENUM_COMPANION
|
||||
H(<!UNINITIALIZED_ENUM_COMPANION!>extensionProp<!>.length),
|
||||
|
||||
I(<!UNINITIALIZED_ENUM_COMPANION!>OtherEnum<!>.extensionFun().length),
|
||||
J(<!UNINITIALIZED_ENUM_COMPANION!>OtherEnum<!>.extensionProp.length),
|
||||
|
||||
K(OtherEnum.<!UNINITIALIZED_ENUM_COMPANION!>Companion<!>.extensionFun().length),
|
||||
L(OtherEnum.<!UNINITIALIZED_ENUM_COMPANION!>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
|
||||
|
||||
Vendored
+82
@@ -0,0 +1,82 @@
|
||||
package
|
||||
|
||||
public val OtherEnum.Companion.extensionProp: kotlin.String
|
||||
public fun OtherEnum.Companion.extensionFun(): kotlin.String
|
||||
|
||||
public final enum class OtherEnum : kotlin.Enum<OtherEnum> {
|
||||
enum entry G
|
||||
|
||||
enum entry H
|
||||
|
||||
enum entry I
|
||||
|
||||
enum entry J
|
||||
|
||||
enum entry K
|
||||
|
||||
enum entry L
|
||||
|
||||
private constructor OtherEnum(/*0*/ x: kotlin.Int)
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
public final val x: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: OtherEnum): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<OtherEnum!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public companion object Companion {
|
||||
private constructor Companion()
|
||||
public final val companionProp: kotlin.String = "someString"
|
||||
public final fun companionFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): OtherEnum
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<OtherEnum>
|
||||
}
|
||||
|
||||
public final enum class SomeEnum : kotlin.Enum<SomeEnum> {
|
||||
enum entry A
|
||||
|
||||
enum entry B
|
||||
|
||||
enum entry C
|
||||
|
||||
enum entry D
|
||||
|
||||
enum entry E
|
||||
|
||||
enum entry F
|
||||
|
||||
private constructor SomeEnum(/*0*/ x: kotlin.Int)
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
public final val x: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: SomeEnum): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<SomeEnum!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public companion object Companion {
|
||||
private constructor Companion()
|
||||
public final val companionProp: kotlin.String = "someString"
|
||||
public final fun companionFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): SomeEnum
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<SomeEnum>
|
||||
}
|
||||
Vendored
+39
@@ -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
|
||||
|
||||
Vendored
+39
@@ -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_ENUM_COMPANION_WARNING, UNINITIALIZED_VARIABLE!>companionProp<!>.length), // UNINITIALIZED_VARIABLE
|
||||
|
||||
C(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>SomeEnum<!>.companionFun().length),
|
||||
D(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>SomeEnum<!>.companionProp.length),
|
||||
|
||||
E(SomeEnum.<!UNINITIALIZED_ENUM_COMPANION_WARNING!>Companion<!>.companionFun().length),
|
||||
F(SomeEnum.<!UNINITIALIZED_ENUM_COMPANION_WARNING!>Companion<!>.<!UNINITIALIZED_VARIABLE!>companionProp<!>.length); // UNINITIALIZED_VARIABLE
|
||||
|
||||
companion object {
|
||||
val companionProp = "someString"
|
||||
fun companionFun(): String = "someString"
|
||||
}
|
||||
}
|
||||
|
||||
enum class OtherEnum(val x: Int) {
|
||||
G(<!UNINITIALIZED_ENUM_COMPANION!>extensionFun<!>().length), // UNINITIALIZED_ENUM_COMPANION
|
||||
H(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>extensionProp<!>.length),
|
||||
|
||||
I(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>OtherEnum<!>.extensionFun().length),
|
||||
J(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>OtherEnum<!>.extensionProp.length),
|
||||
|
||||
K(OtherEnum.<!UNINITIALIZED_ENUM_COMPANION_WARNING!>Companion<!>.extensionFun().length),
|
||||
L(OtherEnum.<!UNINITIALIZED_ENUM_COMPANION_WARNING!>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
|
||||
|
||||
Vendored
+83
@@ -0,0 +1,83 @@
|
||||
package
|
||||
|
||||
public val OtherEnum.Companion.extensionProp: kotlin.String
|
||||
public fun OtherEnum.Companion.extensionFun(): kotlin.String
|
||||
|
||||
public final enum class OtherEnum : kotlin.Enum<OtherEnum> {
|
||||
enum entry G
|
||||
|
||||
enum entry H
|
||||
|
||||
enum entry I
|
||||
|
||||
enum entry J
|
||||
|
||||
enum entry K
|
||||
|
||||
enum entry L
|
||||
|
||||
private constructor OtherEnum(/*0*/ x: kotlin.Int)
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
public final val x: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: OtherEnum): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<OtherEnum!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public companion object Companion {
|
||||
private constructor Companion()
|
||||
public final val companionProp: kotlin.String = "someString"
|
||||
public final fun companionFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): OtherEnum
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<OtherEnum>
|
||||
}
|
||||
|
||||
public final enum class SomeEnum : kotlin.Enum<SomeEnum> {
|
||||
enum entry A
|
||||
|
||||
enum entry B
|
||||
|
||||
enum entry C
|
||||
|
||||
enum entry D
|
||||
|
||||
enum entry E
|
||||
|
||||
enum entry F
|
||||
|
||||
private constructor SomeEnum(/*0*/ x: kotlin.Int)
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
public final val x: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: SomeEnum): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<SomeEnum!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public companion object Companion {
|
||||
private constructor Companion()
|
||||
public final val companionProp: kotlin.String = "someString"
|
||||
public final fun companionFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): SomeEnum
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<SomeEnum>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user