From 7333589663a5eef8912e53ff4ecd03752d55ff26 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 27 Jul 2022 11:22:49 +0200 Subject: [PATCH] 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. --- .../innerDeclarationsResolve/enum.fir.txt | 3 ++ .../lazyResolve/annotationParameters.txt | 39 +++++++++++++++++++ .../testData/builtIns/kotlin.txt | 3 ++ .../AnnotationInAnnotationArguments.txt | 3 ++ .../EnumArgumentWithCustomToString.txt | 3 ++ .../annotations/classMembers/EnumEntry.txt | 3 ++ .../parameters/EnumConstructor.txt | 3 ++ .../EnumWithGenericConstructorParameter.txt | 3 ++ .../EnumWithPrimitiveConstructorParameter.txt | 3 ++ .../enum/EnumVisibility.txt | 9 +++++ .../enum/EnumWithConstuctor.txt | 3 ++ .../enum/EnumWithInnerClasses.txt | 3 ++ .../loadCompiledKotlin/enum/InnerEnum.txt | 3 ++ .../enum/InnerEnumExistingClassObject.txt | 3 ++ .../loadCompiledKotlin/enum/SimpleEnum.txt | 3 ++ .../loadCompiledKotlin/fromLoadJava/Enum.txt | 3 ++ .../memberOrder/EnumEntries.txt | 3 ++ ...nDeclarationWithDifferentArguments.fir.txt | 3 ++ .../resolve/companionAccessInEnum.fir.txt | 3 ++ .../annotationArgumentMustBeEnumConst.fir.txt | 3 ++ .../classInSupertypeForEnum.fir.txt | 3 ++ .../diagnostics/conflictingOverloads.fir.txt | 3 ++ ...legationSuperCallInEnumConstructor.fir.txt | 3 ++ .../diagnostics/repeatedModifier.fir.txt | 3 ++ .../typeOfAnnotationMember.fir.txt | 3 ++ .../diagnostics/typeParametersInEnum.fir.txt | 6 +++ .../testData/resolve/enum.fir.txt | 9 +++++ .../resolve/enumWithCompanion.fir.txt | 3 ++ .../negative/missingEnumEntry.fir.txt | 3 ++ .../positive/exhaustiveWhenAndDNNType.fir.txt | 3 ++ .../exhaustiveWhenAndFlexibleType.fir.txt | 3 ++ .../positive/exhaustiveness_enum.fir.txt | 3 ++ .../resolve/expresssions/enumEntryUse.fir.txt | 3 ++ .../resolve/expresssions/enumValues.fir.txt | 3 ++ .../expresssions/qualifiedExpressions.fir.txt | 3 ++ .../expresssions/qualifierPriority.fir.txt | 3 ++ ...RedundantVisibilityModifierChecker.fir.txt | 3 ++ .../resolve/fromBuilder/enums.fir.txt | 6 +++ .../resolve/unqualifiedEnum/nested.fir.txt | 6 +++ .../unqualifiedEnum/notInsideBranches.fir.txt | 3 ++ .../resolve/unqualifiedEnum/priority.fir.txt | 6 +++ .../resolve/unqualifiedEnum/typeAlias.fir.txt | 3 ++ .../unqualifiedEnum/unqualifiedEnum.fir.txt | 3 ++ .../exposedFunctionReturnType.fir.txt | 3 ++ .../visibility/exposedPropertyType.fir.txt | 3 ++ .../visibility/singletonConstructors.fir.txt | 3 ++ .../testData/resolve/whenElse.fir.txt | 3 ++ .../resolve/whenExpressionType.fir.txt | 3 ++ .../intellij/EnumWithToString.fir.txt | 3 ++ .../selfReferenceToCompanionObject.fir.txt | 3 ++ .../problems/valueOfOrNull.fir.txt | 3 ++ .../declarations/annotation.lazyBodies.txt | 3 ++ .../rawBuilder/declarations/annotation.txt | 3 ++ .../constructorInObject.lazyBodies.txt | 3 ++ .../declarations/constructorInObject.txt | 3 ++ .../declarations/enums.lazyBodies.txt | 9 +++++ .../rawBuilder/declarations/enums.txt | 9 +++++ .../declarations/enums2.lazyBodies.txt | 3 ++ .../rawBuilder/declarations/enums2.txt | 3 ++ .../fir/resolve/calls/tower/TowerLevels.kt | 13 ++++++- .../jetbrains/kotlin/fir/EnumClassUtils.kt | 5 --- .../CompilerDeserializationConfiguration.kt | 2 - .../resolve/calls/tower/PSICallResolver.kt | 8 ++-- .../lazy/descriptors/LazyClassDescriptor.java | 2 +- .../reflection/builtins/enumNameOrdinal.kt | 2 +- .../compileJavaAgainstKotlin/class/kt3561.txt | 1 + .../compileJavaAgainstKotlin/class/kt4050.txt | 1 + .../enum/DefaultArgumentInEnumConstructor.txt | 1 + .../constantEvaluator/constant/strings.txt | 1 + .../export/extendingNonExportedType.txt | 1 + .../export/nonConsumableIdentifiers.txt | 1 + .../testsWithJsStdLib/native/enumEntry.txt | 1 + .../native/externalInterfaceNested.txt | 1 + .../testsWithJsStdLib/native/inheritance.txt | 2 + .../testsWithJsStdLib/native/inlineClass.txt | 1 + .../testsWithJsStdLib/native/innerClass.txt | 1 + .../allCompatibility/specialization.txt | 1 + .../testsWithStdLib/coroutines/kt38179.txt | 2 + .../enumEntryInitialization.txt | 1 + .../deepLambdas.txt | 1 + .../inference/performance/kt41741.txt | 1 + .../testsWithStdLib/javaClassOnCompanion.txt | 1 + .../valueParametersWithDisabledFeature.txt | 1 + .../valueParametersWithEnabledFeature.txt | 1 + .../annotations/CustomAnnotation.fir.txt | 3 ++ .../EnumArgumentWithCustomToString.fir.txt | 3 ++ .../EnumConstructorParameter.fir.txt | 3 ++ .../annotations/NestedEnumArgument.fir.txt | 3 ++ .../compiledJava/enum/EnumMembers.fir.txt | 3 ++ .../enum/EnumWithSpecializedEntry.fir.txt | 3 ++ .../compiledJava/enum/JavaEnum.fir.txt | 3 ++ .../loadJava/compiledJava/static/Enum.fir.txt | 3 ++ .../static/StaticMembersInEnum.fir.txt | 3 ++ .../scopes/StaticScopeForKotlinEnum.kt | 5 +-- .../DeserializationConfiguration.kt | 3 -- .../DeserializedClassDescriptor.kt | 2 +- .../diagnostics/SerializableEnums.txt | 4 ++ 97 files changed, 322 insertions(+), 21 deletions(-) diff --git a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt index 24644bd20d5..76aebf6029f 100644 --- a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt +++ b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt @@ -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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt index 7025798af68..af9e6722b96 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt @@ -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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [TYPES] get(): R|kotlin/enums/EnumEntries| + } 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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } 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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } 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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } 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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } 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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| { public [STATUS] [ContainingClassKey=Anno] constructor([STATUS] [CorrespondingProperty=/Anno.args] args: ): 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| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| + } public final [BODY_RESOLVE] annotation class Anno : R|kotlin/Annotation| { public [BODY_RESOLVE] [ContainingClassKey=Anno] constructor([BODY_RESOLVE] [CorrespondingProperty=/Anno.args] args: ): R|Anno| { diff --git a/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt b/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt index 20947d5d413..20bd7664a1b 100644 --- a/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt +++ b/compiler/fir/analysis-tests/testData/builtIns/kotlin.txt @@ -394,6 +394,9 @@ public final enum class DeprecationLevel : R|kotlin/Enum| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|kotlin/DeprecationLevel| public final static enum entry WARNING: R|kotlin/DeprecationLevel| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/AnnotationInAnnotationArguments.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/AnnotationInAnnotationArguments.txt index 8f419d72b64..f68a86e16ef 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/AnnotationInAnnotationArguments.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/AnnotationInAnnotationArguments.txt @@ -10,6 +10,9 @@ public final enum class E : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/E| public final static enum entry ENTRY: R|test/E| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/EnumArgumentWithCustomToString.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/EnumArgumentWithCustomToString.txt index 44ec2e93a78..316c9079e8d 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/EnumArgumentWithCustomToString.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/EnumArgumentWithCustomToString.txt @@ -5,6 +5,9 @@ public final enum class E : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/E| public final static enum entry CAKE: R|test/E| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/classMembers/EnumEntry.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/classMembers/EnumEntry.txt index df1414595d7..a5f48025a9b 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/classMembers/EnumEntry.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/classMembers/EnumEntry.txt @@ -21,6 +21,9 @@ public final enum class Eee : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/Eee| public final static enum entry Entry1: R|test/Eee| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/parameters/EnumConstructor.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/parameters/EnumConstructor.txt index 0aa76cbca7d..b0f7f2afa3d 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/parameters/EnumConstructor.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/annotations/parameters/EnumConstructor.txt @@ -15,6 +15,9 @@ public final enum class E : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + public final val x: R|kotlin/String| public get(): R|kotlin/String| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithGenericConstructorParameter.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithGenericConstructorParameter.txt index d1e491f09a7..7bdbd814549 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithGenericConstructorParameter.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithGenericConstructorParameter.txt @@ -5,6 +5,9 @@ public final enum class EnumWithGenericConstructorParameter : R|kotlin/Enum| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(list: R|kotlin/collections/List?|): R|test/EnumWithGenericConstructorParameter| } diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithPrimitiveConstructorParameter.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithPrimitiveConstructorParameter.txt index 7ae47e1fb5f..5bb285fb021 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithPrimitiveConstructorParameter.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/class/EnumWithPrimitiveConstructorParameter.txt @@ -5,6 +5,9 @@ public final enum class EnumWithPrimitiveConstructorParameter : R|kotlin/Enum| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(b: R|kotlin/Boolean|): R|test/EnumWithPrimitiveConstructorParameter| } diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumVisibility.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumVisibility.txt index 78c51b98f56..2ca08947526 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumVisibility.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumVisibility.txt @@ -5,6 +5,9 @@ internal final enum class In : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + 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| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + 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| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/Pu| public final static enum entry A: R|test/Pu| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithConstuctor.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithConstuctor.txt index 17b18f5b16a..2302c1c40bc 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithConstuctor.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithConstuctor.txt @@ -8,6 +8,9 @@ public final enum class En : R|kotlin/Enum| { public final val b: R|kotlin/Boolean| public get(): R|kotlin/Boolean| + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + public final val i: R|kotlin/Int| public get(): R|kotlin/Int| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithInnerClasses.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithInnerClasses.txt index 6993f170c33..a7d79a16aeb 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithInnerClasses.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/EnumWithInnerClasses.txt @@ -23,6 +23,9 @@ public final enum class Enum : R|kotlin/Enum| { public final val c: R|kotlin/Int| public get(): R|kotlin/Int| + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/Enum| public final static enum entry ENTRY1: R|test/Enum| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnum.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnum.txt index af6518bab8e..bf2bcb14c95 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnum.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnum.txt @@ -6,6 +6,9 @@ public final class A : R|kotlin/Any| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/A.E| public final static enum entry ENTRY: R|test/A.E| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnumExistingClassObject.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnumExistingClassObject.txt index b8cae01f50d..c5d43d6c2b3 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnumExistingClassObject.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/InnerEnumExistingClassObject.txt @@ -11,6 +11,9 @@ public final class A : R|kotlin/Any| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/A.E| public final static enum entry ENTRY: R|test/A.E| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/SimpleEnum.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/SimpleEnum.txt index d01a3f45882..003f83316e9 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/SimpleEnum.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/enum/SimpleEnum.txt @@ -5,6 +5,9 @@ public final enum class MyEnum : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/MyEnum| public final static enum entry ENTRY: R|test/MyEnum| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/fromLoadJava/Enum.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/fromLoadJava/Enum.txt index 5b47d3ace5e..900fef62958 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/fromLoadJava/Enum.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/fromLoadJava/Enum.txt @@ -5,6 +5,9 @@ public final enum class Test : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(a: R|kotlin/Int|): R|test/Test| public final static enum entry A: R|test/Test| diff --git a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/memberOrder/EnumEntries.txt b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/memberOrder/EnumEntries.txt index 8648a68282a..e2c61031700 100644 --- a/compiler/fir/analysis-tests/testData/loadCompiledKotlin/memberOrder/EnumEntries.txt +++ b/compiler/fir/analysis-tests/testData/loadCompiledKotlin/memberOrder/EnumEntries.txt @@ -5,6 +5,9 @@ public final enum class E : R|kotlin/Enum| { public final static fun values(): R|kotlin/Array| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + private constructor(): R|test/E| public final static enum entry ONE: R|test/E| diff --git a/compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.fir.txt b/compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.fir.txt index 8ff22ecd0f6..476947a19cf 100644 --- a/compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } 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>|, annotation: R|MyOtherAnnotation|): R|MyAnnotation| { diff --git a/compiler/fir/analysis-tests/testData/resolve/companionAccessInEnum.fir.txt b/compiler/fir/analysis-tests/testData/resolve/companionAccessInEnum.fir.txt index 85480189a3d..222fe2ad3cc 100644 --- a/compiler/fir/analysis-tests/testData/resolve/companionAccessInEnum.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/companionAccessInEnum.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/annotationArgumentMustBeEnumConst.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/annotationArgumentMustBeEnumConst.fir.txt index f278178eb08..1da3f933d68 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/annotationArgumentMustBeEnumConst.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/annotationArgumentMustBeEnumConst.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final annotation class Ann : R|kotlin/Annotation| { public constructor(vararg a: R|kotlin/Array|): R|Ann| { diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/classInSupertypeForEnum.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/classInSupertypeForEnum.fir.txt index a74f16320f0..c2f4189e757 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/classInSupertypeForEnum.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/classInSupertypeForEnum.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/conflictingOverloads.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/conflictingOverloads.fir.txt index 67b922bdde5..ca201ad1cff 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/conflictingOverloads.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/conflictingOverloads.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final val u: R|kotlin/Int| = Int(10) public get(): R|kotlin/Int| diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/delegationSuperCallInEnumConstructor.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/delegationSuperCallInEnumConstructor.fir.txt index eb7031915a0..93879879cf9 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/delegationSuperCallInEnumConstructor.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/delegationSuperCallInEnumConstructor.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/repeatedModifier.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/repeatedModifier.fir.txt index 43eb722de0c..aff0ce3d974 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/repeatedModifier.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/repeatedModifier.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public open class E : R|kotlin/Any| { public constructor(int: R|kotlin/Int| = Int(5)): R|E| { diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeOfAnnotationMember.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeOfAnnotationMember.fir.txt index 4ab55533d58..34832da1c69 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeOfAnnotationMember.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeOfAnnotationMember.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final annotation class Ann1 : R|kotlin/Annotation| { public constructor(p1: R|kotlin/Array|, p2: R|kotlin/Array|, p3: R|kotlin/Array|, p4: R|kotlin/Array|, p5: R|Foo|, vararg p6: R|kotlin/Array>|): R|Ann1| { diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeParametersInEnum.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeParametersInEnum.fir.txt index e2042587fb1..56fdb3f77c8 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeParametersInEnum.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/typeParametersInEnum.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final enum class B : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/enum.fir.txt b/compiler/fir/analysis-tests/testData/resolve/enum.fir.txt index 63ef88128fc..853f81e372b 100644 --- a/compiler/fir/analysis-tests/testData/resolve/enum.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/enum.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final enum class E : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } public final enum class EnumClass : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/enumWithCompanion.fir.txt b/compiler/fir/analysis-tests/testData/resolve/enumWithCompanion.fir.txt index dddd5211571..7a5b6e2d2c5 100644 --- a/compiler/fir/analysis-tests/testData/resolve/enumWithCompanion.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/enumWithCompanion.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/negative/missingEnumEntry.fir.txt b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/negative/missingEnumEntry.fir.txt index ae6201fee17..41862331832 100644 --- a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/negative/missingEnumEntry.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/negative/missingEnumEntry.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun test_1(enum: R|SomeEnum|): R|kotlin/Unit| { lval x: R|kotlin/Unit| = when (R|/enum|) { diff --git a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.fir.txt b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.fir.txt index b0a771b215c..522cb4b8eee 100644 --- a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndDNNType.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final class B : R|kotlin/Any| { public constructor(): R|B| { diff --git a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndFlexibleType.fir.txt b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndFlexibleType.fir.txt index 54feacf219b..d4e39ae6425 100644 --- a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndFlexibleType.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveWhenAndFlexibleType.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun test_1(): R|kotlin/Unit| { lval e: R|E!| = Q|Utils|.R|/Utils.getEnum|() diff --git a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveness_enum.fir.txt b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveness_enum.fir.txt index c0ae4f790ca..ecc389bf0e5 100644 --- a/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveness_enum.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/exhaustiveness/positive/exhaustiveness_enum.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun test_1(e: R|Enum|): R|kotlin/Unit| { lval a: R|kotlin/Unit| = when (R|/e|) { diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/enumEntryUse.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/enumEntryUse.fir.txt index 40e131f5744..9e92478105e 100644 --- a/compiler/fir/analysis-tests/testData/resolve/expresssions/enumEntryUse.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/enumEntryUse.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun use(some: R|kotlin/Any?|): R|kotlin/Unit| { } diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/enumValues.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/enumValues.fir.txt index 07225b7b4a3..d356593d714 100644 --- a/compiler/fir/analysis-tests/testData/resolve/expresssions/enumValues.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/enumValues.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun foo(): R|kotlin/Unit| { lval values: R|kotlin/Array| = Q|MyEnum|.R|/MyEnum.values|() diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifiedExpressions.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifiedExpressions.fir.txt index b4130111d98..f3e70b5fc49 100644 --- a/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifiedExpressions.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifiedExpressions.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun foo(): R|kotlin/Unit| { } diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifierPriority.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifierPriority.fir.txt index 106c6dd6f96..700ef43bd6b 100644 --- a/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifierPriority.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/qualifierPriority.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final val gh: R|G| = Q|G|.R|/G.H| public get(): R|G| diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt index 378b79200a7..f3857a9ba4b 100644 --- a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public sealed class G : R|kotlin/Any| { protected constructor(y: R|kotlin/Int|): R|G| { diff --git a/compiler/fir/analysis-tests/testData/resolve/fromBuilder/enums.fir.txt b/compiler/fir/analysis-tests/testData/resolve/fromBuilder/enums.fir.txt index a852210282e..514f509ff9c 100644 --- a/compiler/fir/analysis-tests/testData/resolve/fromBuilder/enums.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/fromBuilder/enums.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final enum class Planet : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/nested.fir.txt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/nested.fir.txt index 5221488cf05..c37dd3b4473 100644 --- a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/nested.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/nested.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final enum class Inner : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun foo(o: R|Outer|, i: R|Inner|): R|kotlin/Int| { ^foo when (R|/o|) { diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/notInsideBranches.fir.txt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/notInsideBranches.fir.txt index 57955901898..f1baf41ca91 100644 --- a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/notInsideBranches.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/notInsideBranches.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun foo(s: R|Some|): { ^foo when (R|/s|) { diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/priority.fir.txt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/priority.fir.txt index 498d173110f..a5cb00da40c 100644 --- a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/priority.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/priority.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } 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| + public get(): R|kotlin/enums/EnumEntries| + } public final val ONE: R|second/Second| = Q|second/Second|.R|second/Second.THREE| public get(): R|second/Second| diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/typeAlias.fir.txt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/typeAlias.fir.txt index 42f8c4c0e7f..71ca8f0c3d4 100644 --- a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/typeAlias.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/typeAlias.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final typealias Other = R|Some| public final fun foo(o: R|Other|): R|kotlin/Int| { diff --git a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/unqualifiedEnum.fir.txt b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/unqualifiedEnum.fir.txt index 4c742baadbb..249f7c16de3 100644 --- a/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/unqualifiedEnum.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/unqualifiedEnum/unqualifiedEnum.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun trivial(s: R|test/Sample|): R|kotlin/Int| { ^trivial when (R|/s|) { diff --git a/compiler/fir/analysis-tests/testData/resolve/visibility/exposedFunctionReturnType.fir.txt b/compiler/fir/analysis-tests/testData/resolve/visibility/exposedFunctionReturnType.fir.txt index ca0f5c2ba83..1240b11e6ea 100644 --- a/compiler/fir/analysis-tests/testData/resolve/visibility/exposedFunctionReturnType.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/visibility/exposedFunctionReturnType.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/visibility/exposedPropertyType.fir.txt b/compiler/fir/analysis-tests/testData/resolve/visibility/exposedPropertyType.fir.txt index 7fff7d52b03..0e624343326 100644 --- a/compiler/fir/analysis-tests/testData/resolve/visibility/exposedPropertyType.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/visibility/exposedPropertyType.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final class AInnerPublic : R|kotlin/Any| { diff --git a/compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.fir.txt b/compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.fir.txt index 5b9ee13a86b..5e5bbf9764f 100644 --- a/compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolve/whenElse.fir.txt b/compiler/fir/analysis-tests/testData/resolve/whenElse.fir.txt index a19e9f31eea..f536bc827c1 100644 --- a/compiler/fir/analysis-tests/testData/resolve/whenElse.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/whenElse.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final class B : R|kotlin/Any| { public constructor(): R|B| { diff --git a/compiler/fir/analysis-tests/testData/resolve/whenExpressionType.fir.txt b/compiler/fir/analysis-tests/testData/resolve/whenExpressionType.fir.txt index de9317e96eb..5bc58432d8f 100644 --- a/compiler/fir/analysis-tests/testData/resolve/whenExpressionType.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/whenExpressionType.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final class B : R|kotlin/Any| { public constructor(): R|B| { diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/EnumWithToString.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/EnumWithToString.fir.txt index cde4807700e..aa84c3aeaf9 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/EnumWithToString.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/EnumWithToString.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt index bc0d1e28ff7..c4c08a710e2 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun box(): R|kotlin/String| { ^box Q|Host.Companion|.R|/Base.fn|.R|SubstitutionOverride|() diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/valueOfOrNull.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/valueOfOrNull.fir.txt index d5e7806daae..ebdf9eab436 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/valueOfOrNull.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/valueOfOrNull.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final fun foo(s: R|kotlin/String?|): R|kotlin/Unit| { lval result: R|SomeEnum| = R|/s|?.{ $subj$.R|kotlin/let|( = let@fun (it: R|kotlin/String|): R|SomeEnum?| { diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.lazyBodies.txt index d7bc72ef83e..490dbc6a351 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.lazyBodies.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } @base() public? final? fun foo(@base() y: @base() Int): Int { LAZY_BLOCK } @base() public? final? val z: = LAZY_EXPRESSION diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt index 74d64ec4191..f3fead5b38c 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/annotation.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } @base() public? final? fun foo(@base() y: @base() Int): Int { @base() local final? fun bar(@base() z: @base() Int): { diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.lazyBodies.txt index 7fdfe8883b6..bb010bfaa3c 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.lazyBodies.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public? final? class C : R|kotlin/Any| { public? constructor(): R|C| { diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt index fd28390e7b6..db90946697e 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public? final? class C : R|kotlin/Any| { public? [ContainingClassKey=C] constructor(): R|C| { diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.lazyBodies.txt index 2a955fcdfb8..8ee85bc4ad6 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.lazyBodies.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public? final? enum class Planet : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } public? final? enum class PseudoInsn : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.txt index 6972228bb81..1fd5de2975a 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public? final? enum class Planet : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } public? final? enum class PseudoInsn : R|kotlin/Enum| { 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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.lazyBodies.txt index a56c4c8077b..798ef4c2dd9 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.lazyBodies.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.txt index dc80a115584..b2b5af92f10 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/enums2.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt index 75b008d2685..98a163d27f1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt @@ -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) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt index dd84ae1a8d7..52f49c8033b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt @@ -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 diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt index 0d0c6258145..08ed503963a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt @@ -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) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index 9d070d6a85f..037f54c14c5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -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 } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java index c1d368ed976..c4d9d42e0b3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -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(); diff --git a/compiler/testData/codegen/box/reflection/builtins/enumNameOrdinal.kt b/compiler/testData/codegen/box/reflection/builtins/enumNameOrdinal.kt index 9ec5c26036c..bcdef0c00bd 100644 --- a/compiler/testData/codegen/box/reflection/builtins/enumNameOrdinal.kt +++ b/compiler/testData/codegen/box/reflection/builtins/enumNameOrdinal.kt @@ -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" diff --git a/compiler/testData/compileJavaAgainstKotlin/class/kt3561.txt b/compiler/testData/compileJavaAgainstKotlin/class/kt3561.txt index 0c2b5489463..e63743c5044 100644 --- a/compiler/testData/compileJavaAgainstKotlin/class/kt3561.txt +++ b/compiler/testData/compileJavaAgainstKotlin/class/kt3561.txt @@ -12,6 +12,7 @@ public final enum class MyEnum : kotlin.Enum { public final /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ kotlin.String): test.MyEnum public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/compileJavaAgainstKotlin/class/kt4050.txt b/compiler/testData/compileJavaAgainstKotlin/class/kt4050.txt index c1edb0c2576..aa650621f37 100644 --- a/compiler/testData/compileJavaAgainstKotlin/class/kt4050.txt +++ b/compiler/testData/compileJavaAgainstKotlin/class/kt4050.txt @@ -18,6 +18,7 @@ public final enum class MyEnum : kotlin.Enum { public final /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ kotlin.String): test.MyEnum public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/compileJavaAgainstKotlin/enum/DefaultArgumentInEnumConstructor.txt b/compiler/testData/compileJavaAgainstKotlin/enum/DefaultArgumentInEnumConstructor.txt index 3ff9e0f3d84..b07dd320958 100644 --- a/compiler/testData/compileJavaAgainstKotlin/enum/DefaultArgumentInEnumConstructor.txt +++ b/compiler/testData/compileJavaAgainstKotlin/enum/DefaultArgumentInEnumConstructor.txt @@ -20,6 +20,7 @@ public final enum class K : kotlin.Enum { public final /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ kotlin.String): test.K public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/tests/constantEvaluator/constant/strings.txt b/compiler/testData/diagnostics/tests/constantEvaluator/constant/strings.txt index 5d9a251b03b..f17d1bd228c 100644 --- a/compiler/testData/diagnostics/tests/constantEvaluator/constant/strings.txt +++ b/compiler/testData/diagnostics/tests/constantEvaluator/constant/strings.txt @@ -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 public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): test.MyEnum public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/export/extendingNonExportedType.txt b/compiler/testData/diagnostics/testsWithJsStdLib/export/extendingNonExportedType.txt index 02ee78be45b..abe72c084d9 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/export/extendingNonExportedType.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/export/extendingNonExportedType.txt @@ -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 public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): foo.ExportedEnum public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/export/nonConsumableIdentifiers.txt b/compiler/testData/diagnostics/testsWithJsStdLib/export/nonConsumableIdentifiers.txt index 5255b462183..ca65c76b220 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/export/nonConsumableIdentifiers.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/export/nonConsumableIdentifiers.txt @@ -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 public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): foo.Nums public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt index 4ef8558232f..b4bfcf9ec76 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt @@ -17,6 +17,7 @@ public final external enum class E : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/externalInterfaceNested.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/externalInterfaceNested.txt index 2d8ad9281ad..fb8e00a043b 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/externalInterfaceNested.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/externalInterfaceNested.txt @@ -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 public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): I.E public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/inheritance.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/inheritance.txt index 300e233f308..cd5b087887c 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/inheritance.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/inheritance.txt @@ -41,6 +41,7 @@ public final external enum class E : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E public final /*synthesized*/ fun values(): kotlin.Array } @@ -58,6 +59,7 @@ public final external enum class F : kotlin.Enum, I { public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): F public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt index 6a6a67cfbff..8d7882e7d4c 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt @@ -22,6 +22,7 @@ public final external inline enum class E : kotlin.Enum { public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/innerClass.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/innerClass.txt index e3e65d419f5..16d4c5c6312 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/innerClass.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/innerClass.txt @@ -34,6 +34,7 @@ public final external enum class E : kotlin.Enum { } // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/allCompatibility/specialization.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/allCompatibility/specialization.txt index aeb6e157341..134aac3547f 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/allCompatibility/specialization.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/allCompatibility/specialization.txt @@ -56,6 +56,7 @@ public final enum class EnumSpecialized : kotlin.Enum, Foo public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): EnumSpecialized public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.txt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.txt index 164ea462474..26bd61af354 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.txt @@ -19,6 +19,7 @@ public final enum class MyEnum : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MyEnum public final /*synthesized*/ fun values(): kotlin.Array } @@ -42,6 +43,7 @@ public final enum class MyOtherEnum : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MyOtherEnum public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/enumEntryInitialization.txt b/compiler/testData/diagnostics/testsWithStdLib/enumEntryInitialization.txt index 2d18b22fba9..af5eb6eea3c 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/enumEntryInitialization.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/enumEntryInitialization.txt @@ -33,6 +33,7 @@ public final enum class JvmTarget : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): JvmTarget public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/completion/postponedArgumentsAnalysis/deepLambdas.txt b/compiler/testData/diagnostics/testsWithStdLib/inference/completion/postponedArgumentsAnalysis/deepLambdas.txt index e622e08e62f..908cb01eb50 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/completion/postponedArgumentsAnalysis/deepLambdas.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/completion/postponedArgumentsAnalysis/deepLambdas.txt @@ -20,6 +20,7 @@ public final enum class Color : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Color public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/performance/kt41741.txt b/compiler/testData/diagnostics/testsWithStdLib/inference/performance/kt41741.txt index ffced281fdf..32ec936aa4c 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/performance/kt41741.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/performance/kt41741.txt @@ -20,6 +20,7 @@ public final enum class Format : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Format public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/javaClassOnCompanion.txt b/compiler/testData/diagnostics/testsWithStdLib/javaClassOnCompanion.txt index 8693422c937..7edf1478913 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/javaClassOnCompanion.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/javaClassOnCompanion.txt @@ -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 public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): test.E public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithDisabledFeature.txt b/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithDisabledFeature.txt index 30c4c6a469c..f841dd9a2e9 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithDisabledFeature.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithDisabledFeature.txt @@ -63,6 +63,7 @@ public final enum class Foo3 : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Foo3 public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithEnabledFeature.txt b/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithEnabledFeature.txt index 13f10123c5e..bcc758b83dd 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithEnabledFeature.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/trailingComma/valueParametersWithEnabledFeature.txt @@ -60,6 +60,7 @@ public final enum class Foo3 : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Foo3 public final /*synthesized*/ fun values(): kotlin.Array } diff --git a/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt index 2a4c481b08b..72788934e53 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/CustomAnnotation.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } @R|test/CustomAnnotation.MyAnnotation|(value = R|test/CustomAnnotation.MyEnum.ONE|()) public open class MyTest : R|kotlin/Any| { public constructor(): R|test/CustomAnnotation.MyTest| diff --git a/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt index bcb243855c1..85e9ed73bfe 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/EnumArgumentWithCustomToString.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } public final annotation class EnumAnno : R|kotlin/Annotation| { public constructor(value: R|test/EnumArgumentWithCustomToString.E|): R|test/EnumArgumentWithCustomToString.EnumAnno| diff --git a/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt index a79a56ed169..b162efe7a44 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/EnumConstructorParameter.fir.txt @@ -10,6 +10,9 @@ public final enum class EnumConstructorParameter : R|kotlin/Enum| + public get(): R|kotlin/enums/EnumEntries| + public final annotation class Anno : R|kotlin/Annotation| { public constructor(value: R|kotlin/String|): R|test/EnumConstructorParameter.Anno| diff --git a/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt index cad297185d6..ae36930e2a9 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/NestedEnumArgument.fir.txt @@ -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| + public get(): R|kotlin/enums/EnumEntries| + } } diff --git a/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt b/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt index 9fea09a37ba..4f21bf804f3 100644 --- a/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt +++ b/compiler/testData/loadJava/compiledJava/enum/EnumMembers.fir.txt @@ -13,4 +13,7 @@ public final enum class EnumMembers : R|kotlin/Enum| { public final static fun valueOf(value: R|kotlin/String|): R|test/EnumMembers| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt b/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt index 930ec6ec317..8b9c25cc794 100644 --- a/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt +++ b/compiler/testData/loadJava/compiledJava/enum/EnumWithSpecializedEntry.fir.txt @@ -7,6 +7,9 @@ public final enum class EnumWithSpecializedEntry : R|kotlin/Enum| + public get(): R|kotlin/enums/EnumEntries| + public/*package*/ open class Nested : R|kotlin/Any| { public/*package*/ constructor(): R|test/EnumWithSpecializedEntry.Nested| diff --git a/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt b/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt index b8ef329dede..c3aad0ee5a2 100644 --- a/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt +++ b/compiler/testData/loadJava/compiledJava/enum/JavaEnum.fir.txt @@ -7,4 +7,7 @@ public final enum class JavaEnum : R|kotlin/Enum| { public final static fun valueOf(value: R|kotlin/String|): R|test/JavaEnum| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt b/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt index d76aaed88a8..05ba1bf3fda 100644 --- a/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt +++ b/compiler/testData/loadJava/compiledJava/static/Enum.fir.txt @@ -8,6 +8,9 @@ public final enum class Enum : R|kotlin/Enum| { public final static fun valueOf(value: R|kotlin/String|): R|test/Enum| { } + public final static val entries: R|kotlin/enums/EnumEntries| + public get(): R|kotlin/enums/EnumEntries| + public open inner class Inner : R|kotlin/Any| { public/*package*/ open fun bar(): R|kotlin/Unit| diff --git a/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt b/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt index ffed59b1eef..b44e52ca5f7 100644 --- a/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt +++ b/compiler/testData/loadJava/compiledJava/static/StaticMembersInEnum.fir.txt @@ -16,4 +16,7 @@ public final enum class StaticMembersInEnum : R|kotlin/Enum| + public get(): R|kotlin/enums/EnumEntries| + } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinEnum.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinEnum.kt index 3a11d9140cf..fd11c437d08 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinEnum.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinEnum.kt @@ -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 by storageManager.createLazyValue { - if (supportEnumEntries) listOfNotNull(createEnumEntriesProperty(containingClass)) else emptyList() + listOfNotNull(createEnumEntriesProperty(containingClass)) } override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) = functions + properties diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt index afb341a2e7f..173ef221115 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt @@ -36,8 +36,5 @@ interface DeserializationConfiguration { val preserveDeclarationsOrdering: Boolean get() = false - val supportEnumEntries: Boolean - get() = false - object Default : DeserializationConfiguration } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt index 7a2bbf7d23b..e459b9d2634 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt @@ -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 diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt index 8caac437ff4..5d5acc48126 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt @@ -83,6 +83,7 @@ public object EnumSerializer : kotlinx.serialization.KSerializer public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): ExplicitlyMarkedEnum public final /*synthesized*/ fun values(): kotlin.Array } @@ -112,6 +113,7 @@ public object EnumSerializer : kotlinx.serialization.KSerializer public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): ExplicitlyMarkedEnumCustom public final /*synthesized*/ fun values(): kotlin.Array } @@ -133,6 +135,7 @@ public final enum class MarkedNameEnum : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MarkedNameEnum public final /*synthesized*/ fun values(): kotlin.Array } @@ -154,6 +157,7 @@ public final enum class SimpleEnum : kotlin.Enum { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String // Static members + public final /*synthesized*/ val entries: kotlin.enums.EnumEntries public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): SimpleEnum public final /*synthesized*/ fun values(): kotlin.Array }