From 02680442a02127dbc3453f66052a4fb0b22c60cc Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Fri, 22 Sep 2023 15:44:55 +0200 Subject: [PATCH] [Test] Add tests for `expect` class default arguments which actualized ...by fake-override. ^KT-62036 --- ...DiagnosticsWithLightTreeTestGenerated.java | 58 +++++++++++++++++++ ...endMPPDiagnosticsWithPsiTestGenerated.java | 58 +++++++++++++++++++ .../constructor.kt | 12 ++++ .../delegation.fir.kt | 17 ++++++ .../delegation.kt | 17 ++++++ .../intersectionOverride.kt | 19 ++++++ .../nestedClass.kt | 18 ++++++ .../realOverride.kt | 16 +++++ .../simple.kt | 14 +++++ .../simpleIncompatible.fir.kt | 14 +++++ .../simpleIncompatible.kt | 14 +++++ .../substitutionOverride.kt | 14 +++++ .../test/runners/DiagnosticTestGenerated.java | 58 +++++++++++++++++++ 13 files changed, 329 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.fir.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.fir.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt create mode 100644 compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java index 14cc733c2d3..d2ddbbbfd80 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java @@ -1089,6 +1089,64 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst public void testNestedClassMethodsViaActualTypealias() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/nestedClassMethodsViaActualTypealias.kt"); } + + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride") + @TestDataPath("$PROJECT_ROOT") + public class MethodDefaultArgsViaActualFakeOverride { + @Test + public void testAllFilesPresentInMethodDefaultArgsViaActualFakeOverride() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("constructor.kt") + public void testConstructor() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt"); + } + + @Test + @TestMetadata("delegation.kt") + public void testDelegation() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt"); + } + + @Test + @TestMetadata("intersectionOverride.kt") + public void testIntersectionOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt"); + } + + @Test + @TestMetadata("nestedClass.kt") + public void testNestedClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt"); + } + + @Test + @TestMetadata("realOverride.kt") + public void testRealOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt"); + } + + @Test + @TestMetadata("simpleIncompatible.kt") + public void testSimpleIncompatible() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt"); + } + + @Test + @TestMetadata("substitutionOverride.kt") + public void testSubstitutionOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt"); + } + } } @Nested diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java index 3586124f1ef..1fd1da15428 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java @@ -1089,6 +1089,64 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi public void testNestedClassMethodsViaActualTypealias() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/nestedClassMethodsViaActualTypealias.kt"); } + + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride") + @TestDataPath("$PROJECT_ROOT") + public class MethodDefaultArgsViaActualFakeOverride { + @Test + public void testAllFilesPresentInMethodDefaultArgsViaActualFakeOverride() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("constructor.kt") + public void testConstructor() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt"); + } + + @Test + @TestMetadata("delegation.kt") + public void testDelegation() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt"); + } + + @Test + @TestMetadata("intersectionOverride.kt") + public void testIntersectionOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt"); + } + + @Test + @TestMetadata("nestedClass.kt") + public void testNestedClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt"); + } + + @Test + @TestMetadata("realOverride.kt") + public void testRealOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt"); + } + + @Test + @TestMetadata("simpleIncompatible.kt") + public void testSimpleIncompatible() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt"); + } + + @Test + @TestMetadata("substitutionOverride.kt") + public void testSubstitutionOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt"); + } + } } @Nested diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt new file mode 100644 index 00000000000..13063ec6af1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt @@ -0,0 +1,12 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect class Foo(p: Int = 1) + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base(p1: Int, p2: Int, p3: Int) { + constructor(p1: Int, p2: Int) : this(p1, p2, 0) +} + +actual class Foo actual constructor(p: Int) : Base(p, p) diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.fir.kt new file mode 100644 index 00000000000..c65dd08483e --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.fir.kt @@ -0,0 +1,17 @@ +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + fun foo(param: Int = 1) +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +interface Base { + fun foo(p: Int) +} + +object BaseImpl : Base { + override fun foo(p: Int) {} +} + +actual class Foo : Base by BaseImpl diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt new file mode 100644 index 00000000000..8a4b762763e --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt @@ -0,0 +1,17 @@ +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + fun foo(param: Int = 1) +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +interface Base { + fun foo(p: Int) +} + +object BaseImpl : Base { + override fun foo(p: Int) {} +} + +actual class Foo : Base by BaseImpl diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt new file mode 100644 index 00000000000..4092e3d2479 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt @@ -0,0 +1,19 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect interface Foo { + fun foo(p: Int = 1) +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +interface Base1 { + fun foo(p: Int) +} + +interface Base2 { + fun foo(p: Int) +} + +@Suppress("ACTUAL_CLASSIFIER_MUST_HAVE_THE_SAME_SUPERTYPES_AS_NON_FINAL_EXPECT_CLASSIFIER") +actual interface Foo : Base1, Base2 diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt new file mode 100644 index 00000000000..769126bf7c8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt @@ -0,0 +1,18 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + class Bar() { + fun foo(p: Int = 1) + } +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base { + fun foo(p: Int) {} +} + +actual class Foo { + actual class Bar : Base() +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt new file mode 100644 index 00000000000..d3f818530aa --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt @@ -0,0 +1,16 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + fun foo(param: Int = 1) +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base { + open fun foo(param: Int) {} +} + +actual class Foo : Base() { + actual override fun foo(param: Int) {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt new file mode 100644 index 00000000000..29f84500141 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt @@ -0,0 +1,14 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + fun foo(param: Int = 1) +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base { + fun foo(param: Int) {} +} + +actual class Foo : Base() diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.fir.kt new file mode 100644 index 00000000000..2b2cc2ed3c9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.fir.kt @@ -0,0 +1,14 @@ +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + fun foo(param: Int = 1) + fun missingOnActual() +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base { + fun foo(param: Int) {} +} + +actual class Foo : Base() diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt new file mode 100644 index 00000000000..2d5cbc77d8e --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt @@ -0,0 +1,14 @@ +// MODULE: m1-common +// FILE: common.kt +expect class Foo { + fun foo(param: Int = 1) + fun missingOnActual() +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base { + fun foo(param: Int) {} +} + +actual class Foo : Base() diff --git a/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt new file mode 100644 index 00000000000..0c7c9cbb2bb --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt @@ -0,0 +1,14 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt +expect class Foo() { + fun foo(p: Int = 1) +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt +open class Base { + fun foo(p: T) {} +} + +actual class Foo : Base() diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 346878d7ae2..4fc959d8d95 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -24114,6 +24114,64 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { public void testNestedClassMethodsViaActualTypealias() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/nestedClassMethodsViaActualTypealias.kt"); } + + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride") + @TestDataPath("$PROJECT_ROOT") + public class MethodDefaultArgsViaActualFakeOverride { + @Test + public void testAllFilesPresentInMethodDefaultArgsViaActualFakeOverride() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("constructor.kt") + public void testConstructor() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/constructor.kt"); + } + + @Test + @TestMetadata("delegation.kt") + public void testDelegation() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/delegation.kt"); + } + + @Test + @TestMetadata("intersectionOverride.kt") + public void testIntersectionOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/intersectionOverride.kt"); + } + + @Test + @TestMetadata("nestedClass.kt") + public void testNestedClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/nestedClass.kt"); + } + + @Test + @TestMetadata("realOverride.kt") + public void testRealOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/realOverride.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simple.kt"); + } + + @Test + @TestMetadata("simpleIncompatible.kt") + public void testSimpleIncompatible() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/simpleIncompatible.kt"); + } + + @Test + @TestMetadata("substitutionOverride.kt") + public void testSubstitutionOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/defaultArguments/methodDefaultArgsViaActualFakeOverride/substitutionOverride.kt"); + } + } } @Nested