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 50b0360d9e3..60f5d85867b 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( type = t, mutable = false, isMember = klass.parent is IrClass, - isStatic = true, + isStatic = !klass.isInner, isAbstract = false, isProtected = klass.visibility == DescriptorVisibilities.PROTECTED, irGetter = context.mapping.objectToGetInstanceFunction[klass]!!, 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 85b3a2d08d4..9759f390201 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 @@ -76,7 +76,8 @@ fun ExportedDeclaration.toTypeScript(indent: String, prefix: String = ""): Strin isMember -> (if (isAbstract) "abstract " else "") + (if (!mutable) "readonly " else "") else -> if (mutable) "let " else "const " } - "$prefix$visibility$keyword$name: ${type.toTypeScript(indent)};" + val possibleStatic = if (isMember && isStatic) "static " else "" + "$prefix$visibility$possibleStatic$keyword$name: ${type.toTypeScript(indent)};" } is ExportedClass -> { diff --git a/js/js.translator/testData/typescript-export/declarations/declarations.d.ts b/js/js.translator/testData/typescript-export/declarations/declarations.d.ts index e40a3a7d3a3..a3ce464c315 100644 --- a/js/js.translator/testData/typescript-export/declarations/declarations.d.ts +++ b/js/js.translator/testData/typescript-export/declarations/declarations.d.ts @@ -51,7 +51,7 @@ declare namespace JS_TESTS { function takesO(o: typeof foo.O): number; class KT_37829 { constructor(); - readonly Companion: { + static readonly Companion: { readonly x: number; }; } diff --git a/js/js.translator/testData/typescript-export/visibility/visibility.d.ts b/js/js.translator/testData/typescript-export/visibility/visibility.d.ts index a7a43989d72..0d643071956 100644 --- a/js/js.translator/testData/typescript-export/visibility/visibility.d.ts +++ b/js/js.translator/testData/typescript-export/visibility/visibility.d.ts @@ -11,9 +11,9 @@ declare namespace JS_TESTS { constructor(); protected readonly protectedVal: number; protected protectedFun(): number; - protected readonly protectedNestedObject: { + protected static readonly protectedNestedObject: { }; - protected readonly Companion: { + protected static readonly Companion: { readonly companionObjectProp: number; }; readonly publicVal: number;