[JS IR] Export type for enum class and not extends kotlin.Enum in TS
^KT-37916 fixed ^KT-44494 fixed
This commit is contained in:
+5
-2
@@ -226,7 +226,7 @@ class ExportModelGenerator(
|
|||||||
// TODO: Handle non-exported super types
|
// TODO: Handle non-exported super types
|
||||||
|
|
||||||
val superType = klass.superTypes
|
val superType = klass.superTypes
|
||||||
.firstOrNull { !it.classifierOrFail.isInterface && !it.isAny() }
|
.firstOrNull { !it.classifierOrFail.isInterface && it.canBeUsedAsSuperTypeOfExportedClasses() }
|
||||||
?.let { exportType(it).takeIf { it !is ExportedType.ErrorType } }
|
?.let { exportType(it).takeIf { it !is ExportedType.ErrorType } }
|
||||||
|
|
||||||
val superInterfaces = klass.superTypes
|
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 {
|
private fun exportTypeArgument(type: IrTypeArgument): ExportedType {
|
||||||
if (type is IrTypeProjection)
|
if (type is IrTypeProjection)
|
||||||
return exportType(type.type)
|
return exportType(type.type)
|
||||||
@@ -328,7 +331,6 @@ class ExportModelGenerator(
|
|||||||
|
|
||||||
when (klass.kind) {
|
when (klass.kind) {
|
||||||
ClassKind.ANNOTATION_CLASS,
|
ClassKind.ANNOTATION_CLASS,
|
||||||
ClassKind.ENUM_CLASS,
|
|
||||||
ClassKind.ENUM_ENTRY ->
|
ClassKind.ENUM_ENTRY ->
|
||||||
ExportedType.ErrorType("Class $name with kind: ${klass.kind}")
|
ExportedType.ErrorType("Class $name with kind: ${klass.kind}")
|
||||||
|
|
||||||
@@ -336,6 +338,7 @@ class ExportModelGenerator(
|
|||||||
ExportedType.TypeOf(name)
|
ExportedType.TypeOf(name)
|
||||||
|
|
||||||
ClassKind.CLASS,
|
ClassKind.CLASS,
|
||||||
|
ClassKind.ENUM_CLASS,
|
||||||
ClassKind.INTERFACE -> ExportedType.ClassType(
|
ClassKind.INTERFACE -> ExportedType.ClassType(
|
||||||
name,
|
name,
|
||||||
type.arguments.map { exportTypeArgument(it) }
|
type.arguments.map { exportTypeArgument(it) }
|
||||||
|
|||||||
Reference in New Issue
Block a user