From 9ff6dcbe0a6b306805235e0a21922e130b889f5f Mon Sep 17 00:00:00 2001 From: Alexander Korepanov Date: Tue, 23 Jan 2024 16:28:20 +0100 Subject: [PATCH] [JS FIR] Add a test for generic interface inheritance ^KT-65216 --- .../name/IntersectionInheritance.kt | 39 +++++++++++ .../name/IntersectionInheritance.txt | 69 +++++++++++++++++++ ...JsOldFrontendDiagnosticsTestGenerated.java | 6 ++ ...JsOldFrontendDiagnosticsTestGenerated.java | 6 ++ .../DiagnosticsWithJsStdLibTestGenerated.java | 6 ++ 5 files changed, 126 insertions(+) create mode 100644 compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt create mode 100644 compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.txt diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt new file mode 100644 index 00000000000..4d7cf67a451 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt @@ -0,0 +1,39 @@ +// FIR_IDENTICAL +// !OPT_IN: kotlin.js.ExperimentalJsExport + +@JsExport +interface GenericInterface1 { + var x: String +} + +@JsExport +interface GenericInterface2 { + var x: T +} + +@JsExport +interface Interface1 { + var x: String +} + +@JsExport +interface Interface2 { + var x: String +} + +@JsExport +abstract class AbstractClass : Interface1 { + override var x = "AC" +} + +@JsExport +open class OpenClass1 : AbstractClass(), Interface2 + +@JsExport +open class OpenClass2 : AbstractClass(), GenericInterface1 + +@JsExport +open class OpenClass3 : AbstractClass(), GenericInterface2 + +@JsExport +open class OpenClass4 : AbstractClass(), Interface1, Interface2, GenericInterface1, GenericInterface2 diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.txt new file mode 100644 index 00000000000..a5f20f644f7 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.txt @@ -0,0 +1,69 @@ +package + +@kotlin.js.JsExport public abstract class AbstractClass : Interface1 { + public constructor AbstractClass() + public open override /*1*/ var x: kotlin.String + 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 +} + +@kotlin.js.JsExport public interface GenericInterface1 { + public abstract var x: kotlin.String + 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 +} + +@kotlin.js.JsExport public interface GenericInterface2 { + public abstract var x: T + 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 +} + +@kotlin.js.JsExport public interface Interface1 { + public abstract var x: kotlin.String + 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 +} + +@kotlin.js.JsExport public interface Interface2 { + public abstract var x: kotlin.String + 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 +} + +@kotlin.js.JsExport public open class OpenClass1 : AbstractClass, Interface2 { + public constructor OpenClass1() + public open override /*2*/ /*fake_override*/ var x: kotlin.String + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String +} + +@kotlin.js.JsExport public open class OpenClass2 : AbstractClass, GenericInterface1 { + public constructor OpenClass2() + public open override /*2*/ /*fake_override*/ var x: kotlin.String + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String +} + +@kotlin.js.JsExport public open class OpenClass3 : AbstractClass, GenericInterface2 { + public constructor OpenClass3() + public open override /*2*/ /*fake_override*/ var x: kotlin.String + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String +} + +@kotlin.js.JsExport public open class OpenClass4 : AbstractClass, Interface1, Interface2, GenericInterface1, GenericInterface2 { + public constructor OpenClass4() + public open override /*5*/ /*fake_override*/ var x: kotlin.String + public open override /*5*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*5*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*5*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsOldFrontendDiagnosticsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsOldFrontendDiagnosticsTestGenerated.java index 9d79c9210e4..07e9780b202 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsOldFrontendDiagnosticsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsOldFrontendDiagnosticsTestGenerated.java @@ -754,6 +754,12 @@ public class FirLightTreeJsOldFrontendDiagnosticsTestGenerated extends AbstractF runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/illegalPackageName.kt"); } + @Test + @TestMetadata("IntersectionInheritance.kt") + public void testIntersectionInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt"); + } + @Test @TestMetadata("jsNameAndOverridden.kt") public void testJsNameAndOverridden() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java index 6baae4474f3..61390d169b6 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java @@ -754,6 +754,12 @@ public class FirPsiJsOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiJ runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/illegalPackageName.kt"); } + @Test + @TestMetadata("IntersectionInheritance.kt") + public void testIntersectionInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt"); + } + @Test @TestMetadata("jsNameAndOverridden.kt") public void testJsNameAndOverridden() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/DiagnosticsWithJsStdLibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/DiagnosticsWithJsStdLibTestGenerated.java index d2cebbc7a60..6e2359a1fc0 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/DiagnosticsWithJsStdLibTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/DiagnosticsWithJsStdLibTestGenerated.java @@ -754,6 +754,12 @@ public class DiagnosticsWithJsStdLibTestGenerated extends AbstractDiagnosticsTes runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/illegalPackageName.kt"); } + @Test + @TestMetadata("IntersectionInheritance.kt") + public void testIntersectionInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/IntersectionInheritance.kt"); + } + @Test @TestMetadata("jsNameAndOverridden.kt") public void testJsNameAndOverridden() throws Exception {