[K/JS] Support companion objects in external and exported declarations

This commit is contained in:
Artem Kobzar
2024-02-27 16:30:13 +00:00
committed by Space Team
parent 5cda3fba12
commit 3429cbd321
51 changed files with 551 additions and 56 deletions
@@ -25,7 +25,14 @@ external interface GoodInterface
@JsExport
interface InterfaceWithCompanion {
companion <!WRONG_EXPORTED_DECLARATION("companion object inside exported interface")!>object<!> {
companion object {
fun foo() = 42
}
}
@JsExport
interface InterfaceWithNamedCompanion {
companion <!NAMED_COMPANION_IN_EXPORTED_INTERFACE!>object Named<!> {
fun foo() = 42
}
}
@@ -25,7 +25,14 @@ external interface GoodInterface
@JsExport
interface InterfaceWithCompanion {
companion <!WRONG_EXPORTED_DECLARATION("companion object inside exported interface")!>object<!> {
companion object {
fun foo() = 42
}
}
@JsExport
interface InterfaceWithNamedCompanion {
companion <!NAMED_COMPANION_IN_EXPORTED_INTERFACE!>object Named<!> {
fun foo() = 42
}
}
@@ -64,6 +64,20 @@ package foo {
}
}
@kotlin.js.JsExport public interface InterfaceWithNamedCompanion {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Named {
private constructor Named()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@kotlin.js.JsExport public interface OuterInterface {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -9,5 +9,9 @@ external interface I {
enum class <!ENUM_CLASS_IN_EXTERNAL_DECLARATION_WARNING, NESTED_CLASS_IN_EXTERNAL_INTERFACE!>E<!>
companion <!NESTED_CLASS_IN_EXTERNAL_INTERFACE!>object<!>
}
companion object
}
external interface I2 {
companion <!NAMED_COMPANION_IN_EXTERNAL_INTERFACE!>object Named<!>
}
@@ -47,3 +47,17 @@ public external interface I {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public external interface I2 {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Named {
private constructor Named()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}