diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt index 70265df4163..34fbe6cf07a 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt @@ -226,7 +226,7 @@ class ExportModelGenerator( // TODO: Handle non-exported super types val superType = klass.superTypes - .firstOrNull { !it.classifierOrFail.isInterface && !it.isAny() } + .firstOrNull { !it.classifierOrFail.isInterface && it.canBeUsedAsSuperTypeOfExportedClasses() } ?.let { exportType(it).takeIf { it !is ExportedType.ErrorType } } val superInterfaces = klass.superTypes @@ -271,6 +271,9 @@ class ExportModelGenerator( ) } + private fun IrType.canBeUsedAsSuperTypeOfExportedClasses(): Boolean = + !this.isAny() && classifierOrNull != context.irBuiltIns.enumClass + private fun exportTypeArgument(type: IrTypeArgument): ExportedType { if (type is IrTypeProjection) return exportType(type.type) @@ -328,7 +331,6 @@ class ExportModelGenerator( when (klass.kind) { ClassKind.ANNOTATION_CLASS, - ClassKind.ENUM_CLASS, ClassKind.ENUM_ENTRY -> ExportedType.ErrorType("Class $name with kind: ${klass.kind}") @@ -336,6 +338,7 @@ class ExportModelGenerator( ExportedType.TypeOf(name) ClassKind.CLASS, + ClassKind.ENUM_CLASS, ClassKind.INTERFACE -> ExportedType.ClassType( name, type.arguments.map { exportTypeArgument(it) }