K1/K2: add Enum.entries unconditionally and filter them out in tower

Before this commit, we added Enum.entries only in case when
LanguageFeature.EnumEntries was ON (with an exception in K1/Java case).
In this commit we add Enum.entries unconditionally, and in case
the language feature is OFF we filter them out during tower resolve.
This commit is contained in:
Mikhail Glukhikh
2022-07-27 11:22:49 +02:00
committed by Space
parent 0a5b3f1e13
commit 7333589663
97 changed files with 322 additions and 21 deletions
@@ -20,4 +20,7 @@ FILE: enum.kt
public final static [BODY_RESOLVE] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|Enum| {
}
public final static [BODY_RESOLVE] val entries: R|kotlin/enums/EnumEntries<Enum>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<Enum>|
}
@@ -13,6 +13,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -48,6 +51,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -83,6 +89,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -118,6 +127,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -153,6 +165,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -188,6 +203,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -223,6 +241,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [TYPES] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -258,6 +279,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -293,6 +317,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -329,6 +356,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -365,6 +395,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
@@ -401,6 +434,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<X>|
}
public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| {
public [STATUS] [ContainingClassKey=Anno] constructor([STATUS] [CorrespondingProperty=/Anno.args] args: <ERROR TYPE REF: Symbol not found for A.X>): R|Anno| {
@@ -437,6 +473,9 @@ FILE: annotationParameters.kt
public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| {
}
public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries<X>|
public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<X>|
}
public final [BODY_RESOLVE] annotation class Anno : R|kotlin/Annotation| {
public [BODY_RESOLVE] [ContainingClassKey=Anno] constructor([BODY_RESOLVE] [CorrespondingProperty=/Anno.args] args: <ERROR TYPE REF: Symbol not found for A.X>): R|Anno| {
@@ -394,6 +394,9 @@ public final enum class DeprecationLevel : R|kotlin/Enum<kotlin/DeprecationLevel
public final static fun values(): R|kotlin/Array<kotlin/DeprecationLevel>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<kotlin/DeprecationLevel>|
public get(): R|kotlin/enums/EnumEntries<kotlin/DeprecationLevel>|
private constructor(): R|kotlin/DeprecationLevel|
public final static enum entry WARNING: R|kotlin/DeprecationLevel|
@@ -10,6 +10,9 @@ public final enum class E : R|kotlin/Enum<test/E>| {
public final static fun values(): R|kotlin/Array<test/E>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/E>|
public get(): R|kotlin/enums/EnumEntries<test/E>|
private constructor(): R|test/E|
public final static enum entry ENTRY: R|test/E|
@@ -5,6 +5,9 @@ public final enum class E : R|kotlin/Enum<test/E>| {
public final static fun values(): R|kotlin/Array<test/E>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/E>|
public get(): R|kotlin/enums/EnumEntries<test/E>|
private constructor(): R|test/E|
public final static enum entry CAKE: R|test/E|
@@ -21,6 +21,9 @@ public final enum class Eee : R|kotlin/Enum<test/Eee>| {
public final static fun values(): R|kotlin/Array<test/Eee>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/Eee>|
public get(): R|kotlin/enums/EnumEntries<test/Eee>|
private constructor(): R|test/Eee|
public final static enum entry Entry1: R|test/Eee|
@@ -15,6 +15,9 @@ public final enum class E : R|kotlin/Enum<test/E>| {
public final static fun values(): R|kotlin/Array<test/E>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/E>|
public get(): R|kotlin/enums/EnumEntries<test/E>|
public final val x: R|kotlin/String|
public get(): R|kotlin/String|
@@ -5,6 +5,9 @@ public final enum class EnumWithGenericConstructorParameter : R|kotlin/Enum<test
public final static fun values(): R|kotlin/Array<test/EnumWithGenericConstructorParameter>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/EnumWithGenericConstructorParameter>|
public get(): R|kotlin/enums/EnumEntries<test/EnumWithGenericConstructorParameter>|
private constructor(list: R|kotlin/collections/List<kotlin/String>?|): R|test/EnumWithGenericConstructorParameter|
}
@@ -5,6 +5,9 @@ public final enum class EnumWithPrimitiveConstructorParameter : R|kotlin/Enum<te
public final static fun values(): R|kotlin/Array<test/EnumWithPrimitiveConstructorParameter>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/EnumWithPrimitiveConstructorParameter>|
public get(): R|kotlin/enums/EnumEntries<test/EnumWithPrimitiveConstructorParameter>|
private constructor(b: R|kotlin/Boolean|): R|test/EnumWithPrimitiveConstructorParameter|
}
@@ -5,6 +5,9 @@ internal final enum class In : R|kotlin/Enum<test/In>| {
public final static fun values(): R|kotlin/Array<test/In>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/In>|
public get(): R|kotlin/enums/EnumEntries<test/In>|
private constructor(): R|test/In|
public final static enum entry A: R|test/In|
@@ -17,6 +20,9 @@ private final enum class Pr : R|kotlin/Enum<test/Pr>| {
public final static fun values(): R|kotlin/Array<test/Pr>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/Pr>|
public get(): R|kotlin/enums/EnumEntries<test/Pr>|
private constructor(): R|test/Pr|
public final static enum entry A: R|test/Pr|
@@ -29,6 +35,9 @@ public final enum class Pu : R|kotlin/Enum<test/Pu>| {
public final static fun values(): R|kotlin/Array<test/Pu>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/Pu>|
public get(): R|kotlin/enums/EnumEntries<test/Pu>|
private constructor(): R|test/Pu|
public final static enum entry A: R|test/Pu|
@@ -8,6 +8,9 @@ public final enum class En : R|kotlin/Enum<test/En>| {
public final val b: R|kotlin/Boolean|
public get(): R|kotlin/Boolean|
public final static val entries: R|kotlin/enums/EnumEntries<test/En>|
public get(): R|kotlin/enums/EnumEntries<test/En>|
public final val i: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -23,6 +23,9 @@ public final enum class Enum : R|kotlin/Enum<test/Enum>| {
public final val c: R|kotlin/Int|
public get(): R|kotlin/Int|
public final static val entries: R|kotlin/enums/EnumEntries<test/Enum>|
public get(): R|kotlin/enums/EnumEntries<test/Enum>|
private constructor(): R|test/Enum|
public final static enum entry ENTRY1: R|test/Enum|
@@ -6,6 +6,9 @@ public final class A : R|kotlin/Any| {
public final static fun values(): R|kotlin/Array<test/A.E>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/A.E>|
public get(): R|kotlin/enums/EnumEntries<test/A.E>|
private constructor(): R|test/A.E|
public final static enum entry ENTRY: R|test/A.E|
@@ -11,6 +11,9 @@ public final class A : R|kotlin/Any| {
public final static fun values(): R|kotlin/Array<test/A.E>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/A.E>|
public get(): R|kotlin/enums/EnumEntries<test/A.E>|
private constructor(): R|test/A.E|
public final static enum entry ENTRY: R|test/A.E|
@@ -5,6 +5,9 @@ public final enum class MyEnum : R|kotlin/Enum<test/MyEnum>| {
public final static fun values(): R|kotlin/Array<test/MyEnum>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/MyEnum>|
public get(): R|kotlin/enums/EnumEntries<test/MyEnum>|
private constructor(): R|test/MyEnum|
public final static enum entry ENTRY: R|test/MyEnum|
@@ -5,6 +5,9 @@ public final enum class Test : R|kotlin/Enum<test/Test>| {
public final static fun values(): R|kotlin/Array<test/Test>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/Test>|
public get(): R|kotlin/enums/EnumEntries<test/Test>|
private constructor(a: R|kotlin/Int|): R|test/Test|
public final static enum entry A: R|test/Test|
@@ -5,6 +5,9 @@ public final enum class E : R|kotlin/Enum<test/E>| {
public final static fun values(): R|kotlin/Array<test/E>| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/E>|
public get(): R|kotlin/enums/EnumEntries<test/E>|
private constructor(): R|test/E|
public final static enum entry ONE: R|test/E|
@@ -12,6 +12,9 @@ FILE: annotationOnDeclarationWithDifferentArguments.kt
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
public final annotation class MyAnnotation : R|kotlin/Annotation| {
public constructor(intValue: R|kotlin/Int|, stringValue: R|kotlin/String|, enumValue: R|SomeEnum|, kClasses: R|kotlin/Array<out kotlin/reflect/KClass<*>>|, annotation: R|MyOtherAnnotation|): R|MyAnnotation| {
@@ -27,4 +27,7 @@ FILE: companionAccessInEnum.kt
public final static fun valueOf(value: R|kotlin/String|): R|A| {
}
public final static val entries: R|kotlin/enums/EnumEntries<A>|
public get(): R|kotlin/enums/EnumEntries<A>|
}
@@ -11,6 +11,9 @@ FILE: annotationArgumentMustBeEnumConst.kt
public final static fun valueOf(value: R|kotlin/String|): R|TestEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<TestEnum>|
public get(): R|kotlin/enums/EnumEntries<TestEnum>|
}
public final annotation class Ann : R|kotlin/Annotation| {
public constructor(vararg a: R|kotlin/Array<out TestEnum>|): R|Ann| {
@@ -18,4 +18,7 @@ FILE: classInSupertypeForEnum.kt
public final static fun valueOf(value: R|kotlin/String|): R|B| {
}
public final static val entries: R|kotlin/enums/EnumEntries<B>|
public get(): R|kotlin/enums/EnumEntries<B>|
}
@@ -56,6 +56,9 @@ FILE: conflictingOverloads.kt
public final static fun valueOf(value: R|kotlin/String|): R|B| {
}
public final static val entries: R|kotlin/enums/EnumEntries<B>|
public get(): R|kotlin/enums/EnumEntries<B>|
}
public final val u: R|kotlin/Int| = Int(10)
public get(): R|kotlin/Int|
@@ -35,4 +35,7 @@ FILE: delegationSuperCallInEnumConstructor.kt
public final static fun valueOf(value: R|kotlin/String|): R|A| {
}
public final static val entries: R|kotlin/enums/EnumEntries<A>|
public get(): R|kotlin/enums/EnumEntries<A>|
}
@@ -38,6 +38,9 @@ FILE: repeatedModifier.kt
public final static fun valueOf(value: R|kotlin/String|): R|C| {
}
public final static val entries: R|kotlin/enums/EnumEntries<C>|
public get(): R|kotlin/enums/EnumEntries<C>|
}
public open class E : R|kotlin/Any| {
public constructor(int: R|kotlin/Int| = Int(5)): R|E| {
@@ -17,6 +17,9 @@ FILE: typeOfAnnotationMember.kt
public final static fun valueOf(value: R|kotlin/String|): R|Enum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Enum>|
public get(): R|kotlin/enums/EnumEntries<Enum>|
}
public final annotation class Ann1 : R|kotlin/Annotation| {
public constructor(p1: R|kotlin/Array<kotlin/Int>|, p2: R|kotlin/Array<kotlin/Int?>|, p3: R|kotlin/Array<kotlin/IntArray>|, p4: R|kotlin/Array<Foo>|, p5: R|Foo|, vararg p6: R|kotlin/Array<out java/lang/Class<*>>|): R|Ann1| {
@@ -10,6 +10,9 @@ FILE: typeParametersInEnum.kt
public final static fun valueOf(value: R|kotlin/String|): R|A| {
}
public final static val entries: R|kotlin/enums/EnumEntries<A>|
public get(): R|kotlin/enums/EnumEntries<A>|
}
public final enum class B : R|kotlin/Enum<B>| {
private constructor(): R|B| {
@@ -22,4 +25,7 @@ FILE: typeParametersInEnum.kt
public final static fun valueOf(value: R|kotlin/String|): R|B| {
}
public final static val entries: R|kotlin/enums/EnumEntries<B>|
public get(): R|kotlin/enums/EnumEntries<B>|
}
@@ -51,6 +51,9 @@ FILE: enum.kt
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
public final enum class E : R|kotlin/Enum<E>| {
public final static enum entry A: R|E|
@@ -64,6 +67,9 @@ FILE: enum.kt
public final static fun valueOf(value: R|kotlin/String|): R|E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<E>|
public get(): R|kotlin/enums/EnumEntries<E>|
}
public final enum class EnumClass : R|kotlin/Enum<EnumClass>| {
private constructor(): R|EnumClass| {
@@ -109,4 +115,7 @@ FILE: enum.kt
public final static fun valueOf(value: R|kotlin/String|): R|EnumClass| {
}
public final static val entries: R|kotlin/enums/EnumEntries<EnumClass>|
public get(): R|kotlin/enums/EnumEntries<EnumClass>|
}
@@ -31,4 +31,7 @@ FILE: enumWithCompanion.kt
public final static fun valueOf(value: R|kotlin/String|): R|EC| {
}
public final static val entries: R|kotlin/enums/EnumEntries<EC>|
public get(): R|kotlin/enums/EnumEntries<EC>|
}
@@ -12,6 +12,9 @@ FILE: missingEnumEntry.kt
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
public final fun test_1(enum: R|SomeEnum|): R|kotlin/Unit| {
lval x: R|kotlin/Unit| = when (R|<local>/enum|) {
@@ -12,6 +12,9 @@ FILE: exhaustiveWhenAndDNNType.kt
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
public final class B : R|kotlin/Any| {
public constructor(): R|B| {
@@ -13,6 +13,9 @@ FILE: main.kt
public final static fun valueOf(value: R|kotlin/String|): R|E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<E>|
public get(): R|kotlin/enums/EnumEntries<E>|
}
public final fun test_1(): R|kotlin/Unit| {
lval e: R|E!| = Q|Utils|.R|/Utils.getEnum|()
@@ -13,6 +13,9 @@ FILE: exhaustiveness_enum.kt
public final static fun valueOf(value: R|kotlin/String|): R|Enum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Enum>|
public get(): R|kotlin/enums/EnumEntries<Enum>|
}
public final fun test_1(e: R|Enum|): R|kotlin/Unit| {
lval a: R|kotlin/Unit| = when (R|<local>/e|) {
@@ -22,6 +22,9 @@ FILE: enumEntryUse.kt
public final static fun valueOf(value: R|kotlin/String|): R|TestEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<TestEnum>|
public get(): R|kotlin/enums/EnumEntries<TestEnum>|
}
public final fun use(some: R|kotlin/Any?|): R|kotlin/Unit| {
}
@@ -17,6 +17,9 @@ FILE: enumValues.kt
public final static fun valueOf(value: R|kotlin/String|): R|MyEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<MyEnum>|
public get(): R|kotlin/enums/EnumEntries<MyEnum>|
}
public final fun foo(): R|kotlin/Unit| {
lval values: R|kotlin/Array<MyEnum>| = Q|MyEnum|.R|/MyEnum.values|()
@@ -42,6 +42,9 @@ FILE: qualifiedExpressions.kt
public final static fun valueOf(value: R|kotlin/String|): R|a/b/E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<a/b/E>|
public get(): R|kotlin/enums/EnumEntries<a/b/E>|
}
public final fun foo(): R|kotlin/Unit| {
}
@@ -91,6 +91,9 @@ FILE: qualifierPriority.kt
public final static fun valueOf(value: R|kotlin/String|): R|G| {
}
public final static val entries: R|kotlin/enums/EnumEntries<G>|
public get(): R|kotlin/enums/EnumEntries<G>|
}
public final val gh: R|G| = Q|G|.R|/G.H|
public get(): R|G|
@@ -109,6 +109,9 @@ FILE: RedundantVisibilityModifierChecker.kt
public final static fun valueOf(value: R|kotlin/String|): R|F| {
}
public final static val entries: R|kotlin/enums/EnumEntries<F>|
public get(): R|kotlin/enums/EnumEntries<F>|
}
public sealed class G : R|kotlin/Any| {
protected constructor(y: R|kotlin/Int|): R|G| {
@@ -13,6 +13,9 @@ FILE: enums.kt
public final static fun valueOf(value: R|kotlin/String|): R|Order| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Order>|
public get(): R|kotlin/enums/EnumEntries<Order>|
}
public final enum class Planet : R|kotlin/Enum<Planet>| {
private constructor(m: R|kotlin/Double|, r: R|kotlin/Double|): R|Planet| {
@@ -79,4 +82,7 @@ FILE: enums.kt
public final static fun valueOf(value: R|kotlin/String|): R|Planet| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Planet>|
public get(): R|kotlin/enums/EnumEntries<Planet>|
}
@@ -12,6 +12,9 @@ FILE: nested.kt
public final static fun valueOf(value: R|kotlin/String|): R|Outer| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Outer>|
public get(): R|kotlin/enums/EnumEntries<Outer>|
}
public final enum class Inner : R|kotlin/Enum<Inner>| {
private constructor(): R|Inner| {
@@ -26,6 +29,9 @@ FILE: nested.kt
public final static fun valueOf(value: R|kotlin/String|): R|Inner| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Inner>|
public get(): R|kotlin/enums/EnumEntries<Inner>|
}
public final fun foo(o: R|Outer|, i: R|Inner|): R|kotlin/Int| {
^foo when (R|<local>/o|) {
@@ -12,6 +12,9 @@ FILE: notInsideBranches.kt
public final static fun valueOf(value: R|kotlin/String|): R|Some| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Some>|
public get(): R|kotlin/enums/EnumEntries<Some>|
}
public final fun foo(s: R|Some|): <ERROR TYPE REF: Cannot infer argument for type parameter K> {
^foo when (R|<local>/s|) {
@@ -14,6 +14,9 @@ FILE: first.kt
public final static fun valueOf(value: R|kotlin/String|): R|first/First| {
}
public final static val entries: R|kotlin/enums/EnumEntries<first/First>|
public get(): R|kotlin/enums/EnumEntries<first/First>|
}
public final val THREE: R|first/First| = Q|first/First|.R|first/First.ONE|
public get(): R|first/First|
@@ -33,6 +36,9 @@ FILE: second.kt
public final static fun valueOf(value: R|kotlin/String|): R|second/Second| {
}
public final static val entries: R|kotlin/enums/EnumEntries<second/Second>|
public get(): R|kotlin/enums/EnumEntries<second/Second>|
}
public final val ONE: R|second/Second| = Q|second/Second|.R|second/Second.THREE|
public get(): R|second/Second|
@@ -12,6 +12,9 @@ FILE: typeAlias.kt
public final static fun valueOf(value: R|kotlin/String|): R|Some| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Some>|
public get(): R|kotlin/enums/EnumEntries<Some>|
}
public final typealias Other = R|Some|
public final fun foo(o: R|Other|): R|kotlin/Int| {
@@ -15,6 +15,9 @@ FILE: unqualifiedEnum.kt
public final static fun valueOf(value: R|kotlin/String|): R|test/Sample| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/Sample>|
public get(): R|kotlin/enums/EnumEntries<test/Sample>|
}
public final fun trivial(s: R|test/Sample|): R|kotlin/Int| {
^trivial when (R|<local>/s|) {
@@ -44,4 +44,7 @@ FILE: exposedFunctionReturnType.kt
public final static fun valueOf(value: R|kotlin/String|): R|Some| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Some>|
public get(): R|kotlin/enums/EnumEntries<Some>|
}
@@ -27,6 +27,9 @@ FILE: exposedPropertyType.kt
public final static fun valueOf(value: R|kotlin/String|): R|A.AInnerProtectedEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<A.AInnerProtectedEnum>|
public get(): R|kotlin/enums/EnumEntries<A.AInnerProtectedEnum>|
}
public final class AInnerPublic : R|kotlin/Any| {
@@ -67,4 +67,7 @@ FILE: singletonConstructors.kt
public final static fun valueOf(value: R|kotlin/String|): R|E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<E>|
public get(): R|kotlin/enums/EnumEntries<E>|
}
@@ -12,6 +12,9 @@ FILE: whenElse.kt
public final static fun valueOf(value: R|kotlin/String|): R|A| {
}
public final static val entries: R|kotlin/enums/EnumEntries<A>|
public get(): R|kotlin/enums/EnumEntries<A>|
}
public final class B : R|kotlin/Any| {
public constructor(): R|B| {
@@ -12,6 +12,9 @@ FILE: whenExpressionType.kt
public final static fun valueOf(value: R|kotlin/String|): R|A| {
}
public final static val entries: R|kotlin/enums/EnumEntries<A>|
public get(): R|kotlin/enums/EnumEntries<A>|
}
public final class B : R|kotlin/Any| {
public constructor(): R|B| {
@@ -25,4 +25,7 @@ FILE: EnumWithToString.kt
public final static fun valueOf(value: R|kotlin/String|): R|Some| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Some>|
public get(): R|kotlin/enums/EnumEntries<Some>|
}
@@ -79,6 +79,9 @@ FILE: selfReferenceToCompanionObject.kt
public final static fun valueOf(value: R|kotlin/String|): R|Test| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Test>|
public get(): R|kotlin/enums/EnumEntries<Test>|
}
public final fun box(): R|kotlin/String| {
^box Q|Host.Companion|.R|/Base.fn|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
@@ -11,6 +11,9 @@ FILE: valueOfOrNull.kt
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
public final fun foo(s: R|kotlin/String?|): R|kotlin/Unit| {
lval result: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
@@ -49,6 +49,9 @@ FILE: annotation.kt
public final static fun valueOf(value: R|kotlin/String|): R|My| {
}
public final static val entries: R|kotlin/enums/EnumEntries<My>|
public get(): R|kotlin/enums/EnumEntries<My>|
}
@base() public? final? fun foo(@base() y: @base() Int): Int { LAZY_BLOCK }
@base() public? final? val z: <implicit> = LAZY_EXPRESSION
@@ -49,6 +49,9 @@ FILE: annotation.kt
public final static [ContainingClassKey=My] fun valueOf(value: R|kotlin/String|): R|My| {
}
public final static [ContainingClassKey=My] val entries: R|kotlin/enums/EnumEntries<My>|
public get(): R|kotlin/enums/EnumEntries<My>|
}
@base() public? final? fun foo(@base() y: @base() Int): Int {
@base() local final? fun bar(@base() z: @base() Int): <implicit> {
@@ -30,6 +30,9 @@ FILE: constructorInObject.kt
public final static fun valueOf(value: R|kotlin/String|): R|B| {
}
public final static val entries: R|kotlin/enums/EnumEntries<B>|
public get(): R|kotlin/enums/EnumEntries<B>|
}
public? final? class C : R|kotlin/Any| {
public? constructor(): R|C| {
@@ -30,6 +30,9 @@ FILE: constructorInObject.kt
public final static [ContainingClassKey=B] fun valueOf(value: R|kotlin/String|): R|B| {
}
public final static [ContainingClassKey=B] val entries: R|kotlin/enums/EnumEntries<B>|
public get(): R|kotlin/enums/EnumEntries<B>|
}
public? final? class C : R|kotlin/Any| {
public? [ContainingClassKey=C] constructor(): R|C| {
@@ -13,6 +13,9 @@ FILE: enums.kt
public final static fun valueOf(value: R|kotlin/String|): R|Order| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Order>|
public get(): R|kotlin/enums/EnumEntries<Order>|
}
public? final? enum class Planet : R|kotlin/Enum<Planet>| {
private constructor(m: Double, r: Double): R|Planet| {
@@ -79,6 +82,9 @@ FILE: enums.kt
public final static fun valueOf(value: R|kotlin/String|): R|Planet| {
}
public final static val entries: R|kotlin/enums/EnumEntries<Planet>|
public get(): R|kotlin/enums/EnumEntries<Planet>|
}
public? final? enum class PseudoInsn : R|kotlin/Enum<PseudoInsn>| {
private constructor(signature: String = String(()V)): R|PseudoInsn| {
@@ -145,4 +151,7 @@ FILE: enums.kt
public final static fun valueOf(value: R|kotlin/String|): R|PseudoInsn| {
}
public final static val entries: R|kotlin/enums/EnumEntries<PseudoInsn>|
public get(): R|kotlin/enums/EnumEntries<PseudoInsn>|
}
@@ -13,6 +13,9 @@ FILE: enums.kt
public final static [ContainingClassKey=Order] fun valueOf(value: R|kotlin/String|): R|Order| {
}
public final static [ContainingClassKey=Order] val entries: R|kotlin/enums/EnumEntries<Order>|
public get(): R|kotlin/enums/EnumEntries<Order>|
}
public? final? enum class Planet : R|kotlin/Enum<Planet>| {
private [ContainingClassKey=Planet] constructor([CorrespondingProperty=/Planet.m] m: Double, [CorrespondingProperty=/Planet.r] r: Double): R|Planet| {
@@ -79,6 +82,9 @@ FILE: enums.kt
public final static [ContainingClassKey=Planet] fun valueOf(value: R|kotlin/String|): R|Planet| {
}
public final static [ContainingClassKey=Planet] val entries: R|kotlin/enums/EnumEntries<Planet>|
public get(): R|kotlin/enums/EnumEntries<Planet>|
}
public? final? enum class PseudoInsn : R|kotlin/Enum<PseudoInsn>| {
private [ContainingClassKey=PseudoInsn] constructor([CorrespondingProperty=/PseudoInsn.signature] signature: String = String(()V)): R|PseudoInsn| {
@@ -146,4 +152,7 @@ FILE: enums.kt
public final static [ContainingClassKey=PseudoInsn] fun valueOf(value: R|kotlin/String|): R|PseudoInsn| {
}
public final static [ContainingClassKey=PseudoInsn] val entries: R|kotlin/enums/EnumEntries<PseudoInsn>|
public get(): R|kotlin/enums/EnumEntries<PseudoInsn>|
}
@@ -51,4 +51,7 @@ FILE: enums2.kt
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
@@ -51,4 +51,7 @@ FILE: enums2.kt
public final static [ContainingClassKey=SomeEnum] fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static [ContainingClassKey=SomeEnum] val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
@@ -5,6 +5,9 @@
package org.jetbrains.kotlin.fir.resolve.calls.tower
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.ContextReceiverGroup
import org.jetbrains.kotlin.fir.declarations.FirConstructor
@@ -207,7 +210,15 @@ class MemberScopeTowerLevel(
return processMembers(info, processor) { consumer ->
withMemberCallLookup(lookupTracker, info) { lookupCtx ->
lookupTracker?.recordCallLookup(info, dispatchReceiverValue.type)
this.processPropertiesByName(info.name) {
this.processPropertiesByName(info.name) processor@{
if (info.name == StandardNames.ENUM_ENTRIES &&
!session.languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries) &&
it is FirPropertySymbol &&
it.callableId.callableName == StandardNames.ENUM_ENTRIES &&
it.source?.kind == KtFakeSourceElementKind.EnumGeneratedDeclaration
) {
return@processor
}
lookupCtx.recordCallableMemberLookup(it)
consumer(it)
}
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.builtins.StandardNames.DEFAULT_VALUE_PARAMETER
import org.jetbrains.kotlin.builtins.StandardNames.ENUM_ENTRIES
import org.jetbrains.kotlin.builtins.StandardNames.ENUM_VALUES
import org.jetbrains.kotlin.builtins.StandardNames.ENUM_VALUE_OF
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fakeElement
@@ -119,10 +118,6 @@ fun FirRegularClassBuilder.generateValueOfFunction(
fun FirRegularClassBuilder.generateEntriesGetter(
moduleData: FirModuleData, packageFqName: FqName, classFqName: FqName, makeExpect: Boolean = false
) {
if (!moduleData.session.languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries)) {
return
}
val sourceElement = source?.fakeElement(KtFakeSourceElementKind.EnumGeneratedDeclaration)
declarations += buildProperty {
source = sourceElement
@@ -25,6 +25,4 @@ class CompilerDeserializationConfiguration(languageVersionSettings: LanguageVers
override val isJvmPackageNameSupported = languageVersionSettings.supportsFeature(LanguageFeature.JvmPackageName)
override val readDeserializedContracts: Boolean = languageVersionSettings.supportsFeature(LanguageFeature.ReadDeserializedContracts)
override val supportEnumEntries: Boolean = languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries)
}
@@ -481,10 +481,10 @@ class PSICallResolver(
if (name != StandardNames.ENUM_ENTRIES || languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries)) {
return result
}
return result.filter {
it !is PropertyDescriptor || !it.isSynthesized ||
it.dispatchReceiverParameter != null || it.extensionReceiverParameter != null ||
(it.containingDeclaration as? ClassDescriptor)?.kind != ClassKind.ENUM_CLASS
return result.filterNot {
it is PropertyDescriptor && it.isSynthesized &&
it.dispatchReceiverParameter == null && it.extensionReceiverParameter == null &&
(it.containingDeclaration as? ClassDescriptor)?.kind == ClassKind.ENUM_CLASS
}
}
}
@@ -134,7 +134,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
this.kind = classLikeInfo.getClassKind();
this.staticScope = kind == ClassKind.ENUM_CLASS ?
new StaticScopeForKotlinEnum(
storageManager, this, c.getLanguageVersionSettings().supportsFeature(LanguageFeature.EnumEntries)
storageManager, this
) : MemberScope.Empty.INSTANCE;
this.typeConstructor = new LazyClassTypeConstructor();
@@ -8,7 +8,7 @@ import kotlin.test.assertTrue
enum class E { X, Y, Z }
fun box(): String {
assertTrue(E::class.members.size in 11..12, "" + E::class.members.size)
assertTrue(E::class.members.size in 12..13, "" + E::class.members.size)
assertEquals("Y", E::name.call(E.Y))
assertEquals(2, E::ordinal.call(E.Z))
return "OK"
@@ -12,6 +12,7 @@ public final enum class MyEnum : kotlin.Enum<test.MyEnum> {
public final /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<test.MyEnum!>!
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<test.MyEnum>
public final /*synthesized*/ fun valueOf(/*0*/ kotlin.String): test.MyEnum
public final /*synthesized*/ fun values(): kotlin.Array<test.MyEnum>
}
@@ -18,6 +18,7 @@ public final enum class MyEnum : kotlin.Enum<test.MyEnum> {
public final /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<test.MyEnum!>!
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<test.MyEnum>
public final /*synthesized*/ fun valueOf(/*0*/ kotlin.String): test.MyEnum
public final /*synthesized*/ fun values(): kotlin.Array<test.MyEnum>
}
@@ -20,6 +20,7 @@ public final enum class K : kotlin.Enum<test.K> {
public final /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<test.K!>!
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<test.K>
public final /*synthesized*/ fun valueOf(/*0*/ kotlin.String): test.K
public final /*synthesized*/ fun values(): kotlin.Array<test.K>
}
@@ -28,6 +28,7 @@ package test {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<test.MyEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): test.MyEnum
public final /*synthesized*/ fun values(): kotlin.Array<test.MyEnum>
}
@@ -45,6 +45,7 @@ package foo {
public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<foo.ExportedEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): foo.ExportedEnum
public final /*synthesized*/ fun values(): kotlin.Array<foo.ExportedEnum>
}
@@ -35,6 +35,7 @@ package foo {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<foo.Nums>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): foo.Nums
public final /*synthesized*/ fun values(): kotlin.Array<foo.Nums>
}
@@ -17,6 +17,7 @@ public final external enum class E : kotlin.Enum<E> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<E>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E
public final /*synthesized*/ fun values(): kotlin.Array<E>
}
@@ -30,6 +30,7 @@ public external interface I {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<I.E>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): I.E
public final /*synthesized*/ fun values(): kotlin.Array<I.E>
}
@@ -41,6 +41,7 @@ public final external enum class E : kotlin.Enum<E> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<E>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E
public final /*synthesized*/ fun values(): kotlin.Array<E>
}
@@ -58,6 +59,7 @@ public final external enum class F : kotlin.Enum<F>, I {
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<F>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): F
public final /*synthesized*/ fun values(): kotlin.Array<F>
}
@@ -22,6 +22,7 @@ public final external inline enum class E : kotlin.Enum<E> {
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<E>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E
public final /*synthesized*/ fun values(): kotlin.Array<E>
}
@@ -34,6 +34,7 @@ public final external enum class E : kotlin.Enum<E> {
}
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<E>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E
public final /*synthesized*/ fun values(): kotlin.Array<E>
}
@@ -56,6 +56,7 @@ public final enum class EnumSpecialized : kotlin.Enum<EnumSpecialized>, Foo<kotl
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<EnumSpecialized>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): EnumSpecialized
public final /*synthesized*/ fun values(): kotlin.Array<EnumSpecialized>
}
@@ -19,6 +19,7 @@ public final enum class MyEnum : kotlin.Enum<MyEnum> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<MyEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MyEnum
public final /*synthesized*/ fun values(): kotlin.Array<MyEnum>
}
@@ -42,6 +43,7 @@ public final enum class MyOtherEnum : kotlin.Enum<MyOtherEnum> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<MyOtherEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MyOtherEnum
public final /*synthesized*/ fun values(): kotlin.Array<MyOtherEnum>
}
@@ -33,6 +33,7 @@ public final enum class JvmTarget : kotlin.Enum<JvmTarget> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<JvmTarget>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): JvmTarget
public final /*synthesized*/ fun values(): kotlin.Array<JvmTarget>
}
@@ -20,6 +20,7 @@ public final enum class Color : kotlin.Enum<Color> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<Color>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Color
public final /*synthesized*/ fun values(): kotlin.Array<Color>
}
@@ -20,6 +20,7 @@ public final enum class Format : kotlin.Enum<Format> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<Format>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Format
public final /*synthesized*/ fun values(): kotlin.Array<Format>
}
@@ -46,6 +46,7 @@ package test {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<test.E>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): test.E
public final /*synthesized*/ fun values(): kotlin.Array<test.E>
}
@@ -63,6 +63,7 @@ public final enum class Foo3 : kotlin.Enum<Foo3> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<Foo3>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Foo3
public final /*synthesized*/ fun values(): kotlin.Array<Foo3>
}
@@ -60,6 +60,7 @@ public final enum class Foo3 : kotlin.Enum<Foo3> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<Foo3>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Foo3
public final /*synthesized*/ fun values(): kotlin.Array<Foo3>
}
@@ -11,6 +11,9 @@ public abstract interface CustomAnnotation : R|kotlin/Any| {
public final static fun valueOf(value: R|kotlin/String|): R|test/CustomAnnotation.MyEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/CustomAnnotation.MyEnum>|
public get(): R|kotlin/enums/EnumEntries<test/CustomAnnotation.MyEnum>|
}
@R|test/CustomAnnotation.MyAnnotation|(value = R|test/CustomAnnotation.MyEnum.ONE|()) public open class MyTest : R|kotlin/Any| {
public constructor(): R|test/CustomAnnotation.MyTest|
@@ -11,6 +11,9 @@ public open class EnumArgumentWithCustomToString : R|kotlin/Any| {
public final static fun valueOf(value: R|kotlin/String|): R|test/EnumArgumentWithCustomToString.E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/EnumArgumentWithCustomToString.E>|
public get(): R|kotlin/enums/EnumEntries<test/EnumArgumentWithCustomToString.E>|
}
public final annotation class EnumAnno : R|kotlin/Annotation| {
public constructor(value: R|test/EnumArgumentWithCustomToString.E|): R|test/EnumArgumentWithCustomToString.EnumAnno|
@@ -10,6 +10,9 @@ public final enum class EnumConstructorParameter : R|kotlin/Enum<test/EnumConstr
public final static fun valueOf(value: R|kotlin/String|): R|test/EnumConstructorParameter| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/EnumConstructorParameter>|
public get(): R|kotlin/enums/EnumEntries<test/EnumConstructorParameter>|
public final annotation class Anno : R|kotlin/Annotation| {
public constructor(value: R|kotlin/String|): R|test/EnumConstructorParameter.Anno|
@@ -15,5 +15,8 @@ public open class NestedEnumArgument : R|kotlin/Any| {
public final static fun valueOf(value: R|kotlin/String|): R|test/NestedEnumArgument.E| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/NestedEnumArgument.E>|
public get(): R|kotlin/enums/EnumEntries<test/NestedEnumArgument.E>|
}
}
@@ -13,4 +13,7 @@ public final enum class EnumMembers : R|kotlin/Enum<test/EnumMembers!>| {
public final static fun valueOf(value: R|kotlin/String|): R|test/EnumMembers| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/EnumMembers>|
public get(): R|kotlin/enums/EnumEntries<test/EnumMembers>|
}
@@ -7,6 +7,9 @@ public final enum class EnumWithSpecializedEntry : R|kotlin/Enum<test/EnumWithSp
public final static fun valueOf(value: R|kotlin/String|): R|test/EnumWithSpecializedEntry| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/EnumWithSpecializedEntry>|
public get(): R|kotlin/enums/EnumEntries<test/EnumWithSpecializedEntry>|
public/*package*/ open class Nested : R|kotlin/Any| {
public/*package*/ constructor(): R|test/EnumWithSpecializedEntry.Nested|
@@ -7,4 +7,7 @@ public final enum class JavaEnum : R|kotlin/Enum<test/JavaEnum!>| {
public final static fun valueOf(value: R|kotlin/String|): R|test/JavaEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/JavaEnum>|
public get(): R|kotlin/enums/EnumEntries<test/JavaEnum>|
}
@@ -8,6 +8,9 @@ public final enum class Enum : R|kotlin/Enum<test/Enum!>| {
public final static fun valueOf(value: R|kotlin/String|): R|test/Enum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/Enum>|
public get(): R|kotlin/enums/EnumEntries<test/Enum>|
public open inner class Inner : R|kotlin/Any| {
public/*package*/ open fun bar(): R|kotlin/Unit|
@@ -16,4 +16,7 @@ public final enum class StaticMembersInEnum : R|kotlin/Enum<test/StaticMembersIn
public final static fun valueOf(value: R|kotlin/String|): R|test/StaticMembersInEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<test/StaticMembersInEnum>|
public get(): R|kotlin/enums/EnumEntries<test/StaticMembersInEnum>|
}
@@ -31,8 +31,7 @@ import org.jetbrains.kotlin.utils.SmartList
// We don't need to track lookups here since this scope used only for introduce special Enum class members
class StaticScopeForKotlinEnum(
storageManager: StorageManager,
private val containingClass: ClassDescriptor,
private val supportEnumEntries: Boolean
private val containingClass: ClassDescriptor
) : MemberScopeImpl() {
init {
assert(containingClass.kind == ClassKind.ENUM_CLASS) { "Class should be an enum: $containingClass" }
@@ -45,7 +44,7 @@ class StaticScopeForKotlinEnum(
}
private val properties: List<PropertyDescriptor> by storageManager.createLazyValue {
if (supportEnumEntries) listOfNotNull(createEnumEntriesProperty(containingClass)) else emptyList()
listOfNotNull(createEnumEntriesProperty(containingClass))
}
override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) = functions + properties
@@ -36,8 +36,5 @@ interface DeserializationConfiguration {
val preserveDeclarationsOrdering: Boolean
get() = false
val supportEnumEntries: Boolean
get() = false
object Default : DeserializationConfiguration
}
@@ -54,7 +54,7 @@ class DeserializedClassDescriptor(
private val staticScope =
if (kind == ClassKind.ENUM_CLASS)
StaticScopeForKotlinEnum(c.storageManager, this, c.components.configuration.supportEnumEntries)
StaticScopeForKotlinEnum(c.storageManager, this)
else
MemberScope.Empty
@@ -83,6 +83,7 @@ public object EnumSerializer : kotlinx.serialization.KSerializer<ExplicitlyMarke
}
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<ExplicitlyMarkedEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): ExplicitlyMarkedEnum
public final /*synthesized*/ fun values(): kotlin.Array<ExplicitlyMarkedEnum>
}
@@ -112,6 +113,7 @@ public object EnumSerializer : kotlinx.serialization.KSerializer<ExplicitlyMarke
}
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<ExplicitlyMarkedEnumCustom>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): ExplicitlyMarkedEnumCustom
public final /*synthesized*/ fun values(): kotlin.Array<ExplicitlyMarkedEnumCustom>
}
@@ -133,6 +135,7 @@ public final enum class MarkedNameEnum : kotlin.Enum<MarkedNameEnum> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<MarkedNameEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MarkedNameEnum
public final /*synthesized*/ fun values(): kotlin.Array<MarkedNameEnum>
}
@@ -154,6 +157,7 @@ public final enum class SimpleEnum : kotlin.Enum<SimpleEnum> {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<SimpleEnum>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): SimpleEnum
public final /*synthesized*/ fun values(): kotlin.Array<SimpleEnum>
}