Skip to content

Commit ecbb4cc

Browse files
lunakolySpace Team
authored andcommitted
[Commonizer] Don't serialize enum entries' classes after commonization
Previously, `KlibMetadataSerializer` would create them in addition to the proper enum entries, but now we use `FirElementSerializer` which only creates the entries. Without this change, some test fail complaining that the commonization result contains additional classes when compared to the golden files. See: `ClassifierCommonizationFromSourcesTest#testClassKindAndModifiers`.
1 parent 844b368 commit ecbb4cc

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTreeSerializer.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,13 @@ private class CirTreeSerializationVisitor(
151151
val directNestedClasses: Collection<KmClass> = node.classes.mapNotNull { (nestedClassName, nestedClassNode) ->
152152
val nestedClassContext = classContext.classifierContext(nestedClassName, classTypeParametersCount)
153153
val nestedClass: KmClass = nestedClassNode.accept(this, nestedClassContext)?.cast() ?: return@mapNotNull null
154-
classConsumer.consume(nestedClass)
155-
statsCollector?.logClass(nestedClass, nestedClassContext)
154+
// Nested classes are collected separately inside `cirClass.serializeClass()`.
155+
// If we add them here, we'll end up with both enum entries and enum entries' classes
156+
// in the resulting metadata, which is not how `FirElementSerializer` works.
157+
if (nestedClass.kind != ClassKind.ENUM_ENTRY) {
158+
classConsumer.consume(nestedClass)
159+
statsCollector?.logClass(nestedClass, nestedClassContext)
160+
}
156161
nestedClass
157162
}
158163

0 commit comments

Comments
 (0)