diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt index 9b127f6f8be..4670627b275 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt @@ -221,3 +221,34 @@ interface MyInterface { } class MyClass : ExternalClass(), MyInterface + +// FILE: InheritGenericOutExternalClass.kt +package InheritGenericOutExternalClass +open external class ExternalClass { + open fun test(x: Int?): T + open fun test(x: Int?, y: String?): T +} + +class MyClass : ExternalClass() + +// FILE: InheritGenericInExternalClass.kt +package InheritGenericInExternalClass +open external class ExternalClass { + open fun test(x: T?): Int + open fun test(x: T?, y: String?): Int +} + +class MyClass : ExternalClass() { + fun test(x: Int?, y: Int?) = x ?: y ?: 1 +} + +// FILE: InheritGenericInExternalClassClash.kt +package InheritGenericInExternalClassClash +open external class ExternalClass { + open fun test(x: T?): Int + open fun test(x: T?, y: String?): Int +} + +class MyClass : ExternalClass() { + override fun test(x: Int?) = x ?: 1 +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt index 019528a3fb0..5212f703db1 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt @@ -17,6 +17,70 @@ package FinalExternalClass { } } +package InheritGenericInExternalClass { + + public open external class ExternalClass { + public constructor ExternalClass() + 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 fun test(/*0*/ x: T?): kotlin.Int + public open fun test(/*0*/ x: T?, /*1*/ y: kotlin.String?): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : InheritGenericInExternalClass.ExternalClass { + public constructor MyClass() + 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 test(/*0*/ x: kotlin.Int?): kotlin.Int + public final fun test(/*0*/ x: kotlin.Int?, /*1*/ y: kotlin.Int?): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int?, /*1*/ y: kotlin.String?): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package InheritGenericInExternalClassClash { + + public open external class ExternalClass { + public constructor ExternalClass() + 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 fun test(/*0*/ x: T?): kotlin.Int + public open fun test(/*0*/ x: T?, /*1*/ y: kotlin.String?): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : InheritGenericInExternalClassClash.ExternalClass { + public constructor MyClass() + 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*/ fun test(/*0*/ x: kotlin.Int?): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int?, /*1*/ y: kotlin.String?): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package InheritGenericOutExternalClass { + + public open external class ExternalClass { + public constructor ExternalClass() + 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 fun test(/*0*/ x: kotlin.Int?): T + public open fun test(/*0*/ x: kotlin.Int?, /*1*/ y: kotlin.String?): T + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : InheritGenericOutExternalClass.ExternalClass { + public constructor MyClass() + 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 test(/*0*/ x: kotlin.Int?): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int?, /*1*/ y: kotlin.String?): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + package OpenExternalClassWithFinalMethods { public open external class ExternalClass { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java index 2ce218326af..5085471fa80 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java @@ -8352,6 +8352,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest { runTest("js/js.translator/testData/box/nameClashes/overloadMethodsWithSameParameterTypeName.kt"); } + @Test + @TestMetadata("promiseThen.kt") + public void testPromiseThen() throws Exception { + runTest("js/js.translator/testData/box/nameClashes/promiseThen.kt"); + } + @Test @TestMetadata("propertyAndNativeMethod.kt") public void testPropertyAndNativeMethod() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java index 462ff3fdfd7..45e60e31a6b 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java @@ -8458,6 +8458,12 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest { runTest("js/js.translator/testData/box/nameClashes/overloadMethodsWithSameParameterTypeName.kt"); } + @Test + @TestMetadata("promiseThen.kt") + public void testPromiseThen() throws Exception { + runTest("js/js.translator/testData/box/nameClashes/promiseThen.kt"); + } + @Test @TestMetadata("propertyAndNativeMethod.kt") public void testPropertyAndNativeMethod() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java index fdf13861500..b7743c3a696 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java @@ -8458,6 +8458,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test { runTest("js/js.translator/testData/box/nameClashes/overloadMethodsWithSameParameterTypeName.kt"); } + @Test + @TestMetadata("promiseThen.kt") + public void testPromiseThen() throws Exception { + runTest("js/js.translator/testData/box/nameClashes/promiseThen.kt"); + } + @Test @TestMetadata("propertyAndNativeMethod.kt") public void testPropertyAndNativeMethod() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index a1ba4965903..ae6d026ac01 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -8352,6 +8352,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/nameClashes/overloadMethodsWithSameParameterTypeName.kt"); } + @Test + @TestMetadata("promiseThen.kt") + public void testPromiseThen() throws Exception { + runTest("js/js.translator/testData/box/nameClashes/promiseThen.kt"); + } + @Test @TestMetadata("propertyAndNativeMethod.kt") public void testPropertyAndNativeMethod() throws Exception { diff --git a/js/js.translator/testData/box/nameClashes/promiseThen.kt b/js/js.translator/testData/box/nameClashes/promiseThen.kt new file mode 100644 index 00000000000..81f077cdfaf --- /dev/null +++ b/js/js.translator/testData/box/nameClashes/promiseThen.kt @@ -0,0 +1,6 @@ +// KJS_WITH_FULL_RUNTIME +import kotlin.js.Promise + +public class MyPromise(executor: ((Unit) -> Unit, (Throwable) -> Unit) -> Unit) : Promise(executor) + +fun box() = "OK"