@@ -37,13 +37,6 @@ internal class KlibMetadataExtensions : MetadataExtensions {
37
37
proto.getExtensionOrNull(KlibMetadataProtoBuf .classFile)?.let {
38
38
extension.file = c.getSourceFile(it)
39
39
}
40
- for (entryProto in proto.enumEntryList) {
41
- val ordinal = entryProto.getExtensionOrNull(KlibMetadataProtoBuf .enumEntryOrdinal)
42
- val name = c[entryProto.name]
43
- val uniqId = entryProto.getExtensionOrNull(KlibMetadataProtoBuf .enumEntryUniqId)?.readUniqId()
44
- val annotations = entryProto.getExtension(KlibMetadataProtoBuf .enumEntryAnnotation).map { it.readAnnotation(c.strings) }
45
- extension.enumEntries.add(KlibEnumEntry (name, uniqId, ordinal, annotations.toMutableList()))
46
- }
47
40
}
48
41
49
42
override fun readPackageExtensions (kmPackage : KmPackage , proto : ProtoBuf .Package , c : ReadContext ) {
@@ -131,6 +124,16 @@ internal class KlibMetadataExtensions : MetadataExtensions {
131
124
}
132
125
}
133
126
127
+ override fun readEnumEntryExtensions (kmEnumEntry : KmEnumEntry , proto : ProtoBuf .EnumEntry , c : ReadContext ) {
128
+ val extension = kmEnumEntry.klibExtensions
129
+
130
+ extension.ordinal = proto.getExtensionOrNull(KlibMetadataProtoBuf .enumEntryOrdinal)
131
+ extension.uniqId = proto.getExtensionOrNull(KlibMetadataProtoBuf .enumEntryUniqId)?.readUniqId()
132
+ for (annotation in proto.getExtension(KlibMetadataProtoBuf .enumEntryAnnotation)) {
133
+ extension.annotations.add(annotation.readAnnotation(c.strings))
134
+ }
135
+ }
136
+
134
137
override fun readTypeExtensions (kmType : KmType , proto : ProtoBuf .Type , c : ReadContext ) {
135
138
val extension = kmType.klibExtensions
136
139
@@ -158,25 +161,6 @@ internal class KlibMetadataExtensions : MetadataExtensions {
158
161
proto.addExtension(KlibMetadataProtoBuf .classAnnotation, annotation.writeAnnotation(c.strings).build())
159
162
}
160
163
161
- for (entry in kmClass.klibEnumEntries) {
162
- val entryIndex = proto.enumEntryList.indexOfFirst { it.name == c[entry.name] }
163
- val entryAnnotationsProto = entry.annotations.map { it.writeAnnotation(c.strings).build() }
164
- val entryProto = ProtoBuf .EnumEntry .newBuilder()
165
- .setName(c[entry.name])
166
- .setExtension(KlibMetadataProtoBuf .enumEntryAnnotation, entryAnnotationsProto)
167
- entry.uniqId?.let { uniqId ->
168
- entryProto.setExtension(KlibMetadataProtoBuf .enumEntryUniqId, uniqId.writeUniqId().build())
169
- }
170
- entry.ordinal?.let { ordinal ->
171
- entryProto.setExtension(KlibMetadataProtoBuf .enumEntryOrdinal, ordinal)
172
- }
173
- if (entryIndex == - 1 ) {
174
- proto.addEnumEntry(entryProto.build())
175
- } else {
176
- proto.setEnumEntry(entryIndex, entryProto.build())
177
- }
178
- }
179
-
180
164
kmClass.uniqId?.let { uniqId ->
181
165
proto.setExtension(KlibMetadataProtoBuf .classUniqId, uniqId.writeUniqId().build())
182
166
}
@@ -267,6 +251,18 @@ internal class KlibMetadataExtensions : MetadataExtensions {
267
251
}
268
252
}
269
253
254
+ override fun writeEnumEntryExtensions (enumEntry : KmEnumEntry , proto : ProtoBuf .EnumEntry .Builder , c : WriteContext ) {
255
+ enumEntry.ordinal?.let { ordinal ->
256
+ proto.setExtension(KlibMetadataProtoBuf .enumEntryOrdinal, ordinal)
257
+ }
258
+ enumEntry.uniqId?.let { uniqId ->
259
+ proto.setExtension(KlibMetadataProtoBuf .enumEntryUniqId, uniqId.writeUniqId().build())
260
+ }
261
+ for (annotation in enumEntry.annotations) {
262
+ proto.addExtension(KlibMetadataProtoBuf .enumEntryAnnotation, annotation.writeAnnotation(c.strings).build())
263
+ }
264
+ }
265
+
270
266
override fun writeTypeExtensions (type : KmType , proto : ProtoBuf .Type .Builder , c : WriteContext ) {
271
267
for (annotation in type.annotations) {
272
268
proto.addExtension(KlibMetadataProtoBuf .typeAnnotation, annotation.writeAnnotation(c.strings).build())
@@ -306,6 +302,9 @@ internal class KlibMetadataExtensions : MetadataExtensions {
306
302
override fun createTypeParameterExtension (): KmTypeParameterExtension =
307
303
KlibTypeParameterExtension ()
308
304
305
+ override fun createEnumEntryExtension (): KlibEnumEntryExtension ? =
306
+ KlibEnumEntryExtension ()
307
+
309
308
override fun createTypeExtension (): KmTypeExtension =
310
309
KlibTypeExtension ()
311
310
0 commit comments