@@ -7,6 +7,7 @@ import com.telerik.metadata.parsing.NativeMethodDescriptor
7
7
import com.telerik.metadata.parsing.NativePropertyDescriptor
8
8
import com.telerik.metadata.parsing.bytecode.classes.NativeClassBytecodeDescriptor
9
9
import com.telerik.metadata.parsing.kotlin.fields.KotlinCompanionFieldDescriptor
10
+ import com.telerik.metadata.parsing.kotlin.fields.KotlinEnumFieldDescriptor
10
11
import com.telerik.metadata.parsing.kotlin.fields.KotlinJvmFieldDescriptor
11
12
import com.telerik.metadata.parsing.kotlin.metadata.MetadataAnnotation
12
13
import com.telerik.metadata.parsing.kotlin.metadata.bytecode.BytecodeClassMetadataParser
@@ -36,7 +37,6 @@ class KotlinClassDescriptor(nativeClass: JavaClass, private val metadataAnnotati
36
37
37
38
override val fields: Array <NativeFieldDescriptor > by lazy {
38
39
val fields = ArrayList <NativeFieldDescriptor >()
39
-
40
40
val meta = kotlinMetadata
41
41
var kotlinMetadataProperties: Collection <KmProperty > = emptyList()
42
42
@@ -48,6 +48,12 @@ class KotlinClassDescriptor(nativeClass: JavaClass, private val metadataAnnotati
48
48
if (possibleCompanionField.isPresent) {
49
49
fields.add(possibleCompanionField.get())
50
50
}
51
+
52
+ if (metaClass.enumEntries.isNotEmpty()){
53
+ val enumFields = getEnumEntriesAsFields(nativeClass, metaClass.enumEntries)
54
+ fields.addAll(enumFields)
55
+ }
56
+
51
57
} else if (meta is KotlinClassMetadata .FileFacade ) {
52
58
kotlinMetadataProperties = meta.toKmPackage().properties
53
59
} else if (meta is KotlinClassMetadata .MultiFileClassPart ) {
@@ -107,6 +113,20 @@ class KotlinClassDescriptor(nativeClass: JavaClass, private val metadataAnnotati
107
113
return Optional .empty()
108
114
}
109
115
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
+
110
130
override val properties: Array <out NativePropertyDescriptor > by lazy {
111
131
val metadata = kotlinMetadata
112
132
if (metadata is KotlinClassMetadata .Class ) {
0 commit comments