[FIR] Add values and valueOf to deserialized enums
This commit is contained in:
+8
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
@@ -14,6 +15,8 @@ import org.jetbrains.kotlin.fir.declarations.addDeclarations
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.generateValueOfFunction
|
||||
import org.jetbrains.kotlin.fir.generateValuesFunction
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirClonableSymbolProvider.Companion.CLONE
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirClonableSymbolProvider.Companion.CLONABLE_CLASS_ID
|
||||
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
|
||||
@@ -130,6 +133,11 @@ fun deserializeClassToSymbol(
|
||||
}
|
||||
)
|
||||
|
||||
if (classKind == ClassKind.ENUM_CLASS) {
|
||||
generateValuesFunction(session, classId.packageFqName, classId.relativeClassName)
|
||||
generateValueOfFunction(session, classId.packageFqName, classId.relativeClassName)
|
||||
}
|
||||
|
||||
if (isSealed) {
|
||||
classProto.sealedSubclassFqNameList.mapTo((this as FirSealedClassBuilder).inheritors) {
|
||||
ClassId.fromString(nameResolver.getQualifiedClassName(it))
|
||||
|
||||
@@ -364,6 +364,12 @@ public final enum class DeprecationLevel : R|kotlin/Enum<kotlin/DeprecationLevel
|
||||
public final static enum entry WARNING: R|kotlin/DeprecationLevel|
|
||||
public final static enum entry ERROR: R|kotlin/DeprecationLevel|
|
||||
public final static enum entry HIDDEN: R|kotlin/DeprecationLevel|
|
||||
public final static fun values(): R|kotlin/Array<kotlin/DeprecationLevel>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|kotlin/DeprecationLevel| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final class Double : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Double>| {
|
||||
|
||||
Vendored
+6
@@ -7,6 +7,12 @@ public final enum class E : R|kotlin/Enum<test/E>| {
|
||||
private constructor(): R|test/E|
|
||||
|
||||
public final static enum entry ENTRY: R|test/E|
|
||||
public final static fun values(): R|kotlin/Array<test/E>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final annotation class EnumOption : R|kotlin/Annotation| {
|
||||
|
||||
Vendored
+6
@@ -2,6 +2,12 @@ public final enum class E : R|kotlin/Enum<test/E>| {
|
||||
private constructor(): R|test/E|
|
||||
|
||||
public final static enum entry CAKE: R|test/E|
|
||||
public final static fun values(): R|kotlin/Array<test/E>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final annotation class EnumAnno : R|kotlin/Annotation| {
|
||||
|
||||
+6
@@ -21,5 +21,11 @@ public final enum class Eee : R|kotlin/Enum<test/Eee>| {
|
||||
public final static enum entry Entry2: R|test/Eee|
|
||||
public final static enum entry Entry3: R|test/Eee|
|
||||
public final static enum entry Entry4: R|test/Eee|
|
||||
public final static fun values(): R|kotlin/Array<test/Eee>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/Eee| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Vendored
+7
@@ -17,4 +17,11 @@ public final enum class E : R|kotlin/Enum<test/E>| {
|
||||
|
||||
private constructor(x: R|kotlin/String|, y: R|kotlin/Int|): R|test/E|
|
||||
|
||||
public final static fun values(): R|kotlin/Array<test/E>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Vendored
+7
@@ -1,4 +1,11 @@
|
||||
public final enum class EnumWithGenericConstructorParameter : R|kotlin/Enum<test/EnumWithGenericConstructorParameter>| {
|
||||
private constructor(list: R|kotlin/collections/List<kotlin/String>?|): R|test/EnumWithGenericConstructorParameter|
|
||||
|
||||
public final static fun values(): R|kotlin/Array<test/EnumWithGenericConstructorParameter>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/EnumWithGenericConstructorParameter| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Vendored
+7
@@ -1,4 +1,11 @@
|
||||
public final enum class EnumWithPrimitiveConstructorParameter : R|kotlin/Enum<test/EnumWithPrimitiveConstructorParameter>| {
|
||||
private constructor(b: R|kotlin/Boolean|): R|test/EnumWithPrimitiveConstructorParameter|
|
||||
|
||||
public final static fun values(): R|kotlin/Array<test/EnumWithPrimitiveConstructorParameter>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/EnumWithPrimitiveConstructorParameter| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,17 +2,35 @@ internal final enum class In : R|kotlin/Enum<test/In>| {
|
||||
private constructor(): R|test/In|
|
||||
|
||||
public final static enum entry A: R|test/In|
|
||||
public final static fun values(): R|kotlin/Array<test/In>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/In| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final enum class Pr : R|kotlin/Enum<test/Pr>| {
|
||||
private constructor(): R|test/Pr|
|
||||
|
||||
public final static enum entry A: R|test/Pr|
|
||||
public final static fun values(): R|kotlin/Array<test/Pr>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/Pr| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final enum class Pu : R|kotlin/Enum<test/Pu>| {
|
||||
private constructor(): R|test/Pu|
|
||||
|
||||
public final static enum entry A: R|test/Pu|
|
||||
public final static fun values(): R|kotlin/Array<test/Pu>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/Pu| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -10,5 +10,11 @@ public final enum class En : R|kotlin/Enum<test/En>| {
|
||||
public final static enum entry E1: R|test/En|
|
||||
public final static enum entry E2: R|test/En|
|
||||
public final static enum entry E3: R|test/En|
|
||||
public final static fun values(): R|kotlin/Array<test/En>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/En| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -21,5 +21,11 @@ public final enum class Enum : R|kotlin/Enum<test/Enum>| {
|
||||
|
||||
public final static enum entry ENTRY1: R|test/Enum|
|
||||
public final static enum entry ENTRY2: R|test/Enum|
|
||||
public final static fun values(): R|kotlin/Array<test/Enum>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/Enum| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,12 @@ public final class A : R|kotlin/Any| {
|
||||
private constructor(): R|test/A.E|
|
||||
|
||||
public final static enum entry ENTRY: R|test/A.E|
|
||||
public final static fun values(): R|kotlin/Array<test/A.E>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/A.E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
@@ -10,6 +10,12 @@ public final class A : R|kotlin/Any| {
|
||||
private constructor(): R|test/A.E|
|
||||
|
||||
public final static enum entry ENTRY: R|test/A.E|
|
||||
public final static fun values(): R|kotlin/Array<test/A.E>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/A.E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,5 +2,11 @@ public final enum class MyEnum : R|kotlin/Enum<test/MyEnum>| {
|
||||
private constructor(): R|test/MyEnum|
|
||||
|
||||
public final static enum entry ENTRY: R|test/MyEnum|
|
||||
public final static fun values(): R|kotlin/Array<test/MyEnum>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/MyEnum| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -3,5 +3,11 @@ public final enum class Test : R|kotlin/Enum<test/Test>| {
|
||||
|
||||
public final static enum entry A: R|test/Test|
|
||||
public final static enum entry B: R|test/Test|
|
||||
public final static fun values(): R|kotlin/Array<test/Test>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/Test| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -9,5 +9,11 @@ public final enum class E : R|kotlin/Enum<test/E>| {
|
||||
public final static enum entry SIX: R|test/E|
|
||||
public final static enum entry SEVEN: R|test/E|
|
||||
public final static enum entry EIGHT: R|test/E|
|
||||
public final static fun values(): R|kotlin/Array<test/E>| {
|
||||
}
|
||||
|
||||
public final static fun valueOf(value: R|kotlin/String|): R|test/E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
fun test() {
|
||||
val values = AnnotationTarget.values()
|
||||
val entry = AnnotationTarget.valueOf("CLASS")
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
FILE: enumValuesDeserialized.kt
|
||||
public final fun test(): R|kotlin/Unit| {
|
||||
lval values: R|kotlin/Array<kotlin/annotation/AnnotationTarget>| = Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.values|()
|
||||
lval entry: R|kotlin/annotation/AnnotationTarget| = Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.valueOf|(String(CLASS))
|
||||
}
|
||||
Generated
+5
@@ -88,6 +88,11 @@ public class FirDiagnosticsWithStdlibTestGenerated extends AbstractFirDiagnostic
|
||||
runTest("compiler/fir/resolve/testData/resolveWithStdlib/emptyArray.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("enumValuesDeserialized.kt")
|
||||
public void testEnumValuesDeserialized() throws Exception {
|
||||
runTest("compiler/fir/resolve/testData/resolveWithStdlib/enumValuesDeserialized.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("exception.kt")
|
||||
public void testException() throws Exception {
|
||||
runTest("compiler/fir/resolve/testData/resolveWithStdlib/exception.kt");
|
||||
|
||||
Reference in New Issue
Block a user