@@ -7,6 +7,7 @@ import com.telerik.metadata.parsing.NativeMethodDescriptor
77import com.telerik.metadata.parsing.NativePropertyDescriptor
88import com.telerik.metadata.parsing.bytecode.classes.NativeClassBytecodeDescriptor
99import com.telerik.metadata.parsing.kotlin.fields.KotlinCompanionFieldDescriptor
10+ import com.telerik.metadata.parsing.kotlin.fields.KotlinEnumFieldDescriptor
1011import com.telerik.metadata.parsing.kotlin.fields.KotlinJvmFieldDescriptor
1112import com.telerik.metadata.parsing.kotlin.metadata.MetadataAnnotation
1213import com.telerik.metadata.parsing.kotlin.metadata.bytecode.BytecodeClassMetadataParser
@@ -36,7 +37,6 @@ class KotlinClassDescriptor(nativeClass: JavaClass, private val metadataAnnotati
3637
3738 override val fields: Array <NativeFieldDescriptor > by lazy {
3839 val fields = ArrayList <NativeFieldDescriptor >()
39-
4040 val meta = kotlinMetadata
4141 var kotlinMetadataProperties: Collection <KmProperty > = emptyList()
4242
@@ -48,6 +48,12 @@ class KotlinClassDescriptor(nativeClass: JavaClass, private val metadataAnnotati
4848 if (possibleCompanionField.isPresent) {
4949 fields.add(possibleCompanionField.get())
5050 }
51+
52+ if (metaClass.enumEntries.isNotEmpty()){
53+ val enumFields = getEnumEntriesAsFields(nativeClass, metaClass.enumEntries)
54+ fields.addAll(enumFields)
55+ }
56+
5157 } else if (meta is KotlinClassMetadata .FileFacade ) {
5258 kotlinMetadataProperties = meta.toKmPackage().properties
5359 } else if (meta is KotlinClassMetadata .MultiFileClassPart ) {
@@ -107,6 +113,20 @@ class KotlinClassDescriptor(nativeClass: JavaClass, private val metadataAnnotati
107113 return Optional .empty()
108114 }
109115
116+ private fun getEnumEntriesAsFields (nativeClass : JavaClass , metadataEnumEntries : Collection <String >): Collection <KotlinEnumFieldDescriptor > {
117+ val bytecodeFields = nativeClass.fields
118+
119+ val matchingEnumFields = bytecodeFields
120+ .filter {
121+ metadataEnumEntries.contains(it.name)
122+ }
123+ .map {
124+ KotlinEnumFieldDescriptor (it, isPublic, isInternal, isProtected)
125+ }
126+
127+ return matchingEnumFields
128+ }
129+
110130 override val properties: Array <out NativePropertyDescriptor > by lazy {
111131 val metadata = kotlinMetadata
112132 if (metadata is KotlinClassMetadata .Class ) {
0 commit comments