From 0f0421ea3dd8b0dfb899db21a65582749106a3bc Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Thu, 1 Dec 2022 15:01:24 +0000 Subject: [PATCH] [K/JS] Generating TypeScript definitions for exceptions and rest of the types ^Fixed KT-53940 --- .../ir/backend/js/export/ExportModelToTsDeclarations.kt | 3 +-- .../typescript-export/implicit-export/implicit-export.d.ts | 3 +++ .../typescript-export/implicit-export/implicit-export.kt | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelToTsDeclarations.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelToTsDeclarations.kt index 74501aa36ce..5c9ca3df117 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelToTsDeclarations.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelToTsDeclarations.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.ir.util.isObject import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.js.common.isValidES5Identifier import org.jetbrains.kotlin.serialization.js.ModuleKind -import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance import org.jetbrains.kotlin.utils.addToStdlib.runIf private const val Nullable = "Nullable" @@ -318,7 +317,7 @@ class ExportModelToTsDeclarations { " /* extends $implicitlyExportedClassesString */" } else { val originallyDefinedSuperClass = implicitlyExportedClassesString.takeIf { it.isNotEmpty() }?.let { "/* $it */ " }.orEmpty() - val transitivelyDefinedSuperClass = firstIsInstance().toTypeScript(indent, false) + val transitivelyDefinedSuperClass = single { it !is ExportedType.ImplicitlyExportedType }.toTypeScript(indent, false) " extends $originallyDefinedSuperClass$transitivelyDefinedSuperClass" } } diff --git a/js/js.translator/testData/typescript-export/implicit-export/implicit-export.d.ts b/js/js.translator/testData/typescript-export/implicit-export/implicit-export.d.ts index 3bcba7f6510..5c59bada09e 100644 --- a/js/js.translator/testData/typescript-export/implicit-export/implicit-export.d.ts +++ b/js/js.translator/testData/typescript-export/implicit-export/implicit-export.d.ts @@ -42,5 +42,8 @@ declare namespace JS_TESTS { const console: Console; const error: WebAssembly.CompileError; function functionWithTypeAliasInside(x: any/* foo.NonExportedGenericInterface */): any/* foo.NonExportedGenericInterface */; + class TheNewException extends Error { + constructor(); + } } } diff --git a/js/js.translator/testData/typescript-export/implicit-export/implicit-export.kt b/js/js.translator/testData/typescript-export/implicit-export/implicit-export.kt index 4217f11e140..1be9bd11fff 100644 --- a/js/js.translator/testData/typescript-export/implicit-export/implicit-export.kt +++ b/js/js.translator/testData/typescript-export/implicit-export/implicit-export.kt @@ -92,4 +92,7 @@ typealias NotExportedTypeAlias = NonExportedGenericInterface @JsExport fun functionWithTypeAliasInside(x: NotExportedTypeAlias): NotExportedTypeAlias { return x -} \ No newline at end of file +} + +@JsExport +class TheNewException: Throwable() \ No newline at end of file