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 f9615865552..d0c180a7ddc 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 @@ -20,6 +20,18 @@ import java.util.regex.Pattern; @TestMetadata("compiler/testData/diagnostics/tests/multiplatform") @TestDataPath("$PROJECT_ROOT") public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends AbstractFirLightTreeWithActualizerDiagnosticsTest { + @Test + @TestMetadata("actualFakeOverride.kt") + public void testActualFakeOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride.kt"); + } + + @Test + @TestMetadata("actualFakeOverrideVirtual.kt") + public void testActualFakeOverrideVirtual() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverrideVirtual.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { @@ -103,6 +115,18 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst runTest("compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.kt"); } + @Test + @TestMetadata("implicitActualFakeOverride_AbstractMap.kt") + public void testImplicitActualFakeOverride_AbstractMap() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.kt"); + } + + @Test + @TestMetadata("implicitActualFakeOverride_simple.kt") + public void testImplicitActualFakeOverride_simple() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_simple.kt"); + } + @Test @TestMetadata("incDecOperatorsInExpectClass.kt") public void testIncDecOperatorsInExpectClass() throws Exception { 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 6d3ea240385..8302879d1c2 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 @@ -20,6 +20,18 @@ import java.util.regex.Pattern; @TestMetadata("compiler/testData/diagnostics/tests/multiplatform") @TestDataPath("$PROJECT_ROOT") public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFirPsiWithActualizerDiagnosticsTest { + @Test + @TestMetadata("actualFakeOverride.kt") + public void testActualFakeOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride.kt"); + } + + @Test + @TestMetadata("actualFakeOverrideVirtual.kt") + public void testActualFakeOverrideVirtual() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverrideVirtual.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { @@ -103,6 +115,18 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi runTest("compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.kt"); } + @Test + @TestMetadata("implicitActualFakeOverride_AbstractMap.kt") + public void testImplicitActualFakeOverride_AbstractMap() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.kt"); + } + + @Test + @TestMetadata("implicitActualFakeOverride_simple.kt") + public void testImplicitActualFakeOverride_simple() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_simple.kt"); + } + @Test @TestMetadata("incDecOperatorsInExpectClass.kt") public void testIncDecOperatorsInExpectClass() throws Exception { diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride.kt b/compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride.kt new file mode 100644 index 00000000000..6a2529946e7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride.kt @@ -0,0 +1,20 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt + +expect class HashMap { + val size: Int +} + +expect abstract class AbstractMap { + val size: Int +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +actual abstract class AbstractMap() { + actual val size: Int = 0 +} + +actual class HashMap : AbstractMap() diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualFakeOverrideVirtual.kt b/compiler/testData/diagnostics/tests/multiplatform/actualFakeOverrideVirtual.kt new file mode 100644 index 00000000000..6d1794e0069 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/actualFakeOverrideVirtual.kt @@ -0,0 +1,24 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt + +interface Map { + val size: Int +} + +expect class HashMap : Map { + override val size: Int +} + +expect abstract class AbstractMap : Map { + override val size: Int +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +actual abstract class AbstractMap() : Map { + actual override val size: Int = 0 +} + +actual class HashMap : AbstractMap(), Map diff --git a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt new file mode 100644 index 00000000000..f977beda2ff --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt @@ -0,0 +1,15 @@ +// WITH_STDLIB +// MODULE: m1-common +// FILE: common.kt + +// K2: false positve INCOMPATIBLE_MATCHING: KT-60155 +public expect abstract class AbstractMutableMap : MutableMap { + override val values: MutableCollection +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +import java.util.AbstractMap + +public actual abstract class AbstractMutableMap() : MutableMap, AbstractMap() diff --git a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.kt b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.kt new file mode 100644 index 00000000000..b2c3ad70bd9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.kt @@ -0,0 +1,15 @@ +// WITH_STDLIB +// MODULE: m1-common +// FILE: common.kt + +// K2: false positve INCOMPATIBLE_MATCHING: KT-60155 +public expect abstract class AbstractMutableMap : MutableMap { + override val values: MutableCollection +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +import java.util.AbstractMap + +public actual abstract class AbstractMutableMap() : MutableMap, AbstractMap() diff --git a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_simple.kt b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_simple.kt new file mode 100644 index 00000000000..1fb9ae2144a --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_simple.kt @@ -0,0 +1,16 @@ +// FIR_IDENTICAL +// MODULE: m1-common +// FILE: common.kt + +expect class Foo { + fun foo(): Int +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +interface FooProvider { + fun foo(): Int = 42 +} + +actual class Foo : FooProvider 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 b2fca0cf577..8151a2f6a8c 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 @@ -22699,6 +22699,18 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { @TestMetadata("compiler/testData/diagnostics/tests/multiplatform") @TestDataPath("$PROJECT_ROOT") public class Multiplatform { + @Test + @TestMetadata("actualFakeOverride.kt") + public void testActualFakeOverride() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride.kt"); + } + + @Test + @TestMetadata("actualFakeOverrideVirtual.kt") + public void testActualFakeOverrideVirtual() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverrideVirtual.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { @@ -22782,6 +22794,18 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/multiplatform/implFakeOverride.kt"); } + @Test + @TestMetadata("implicitActualFakeOverride_AbstractMap.kt") + public void testImplicitActualFakeOverride_AbstractMap() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.kt"); + } + + @Test + @TestMetadata("implicitActualFakeOverride_simple.kt") + public void testImplicitActualFakeOverride_simple() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_simple.kt"); + } + @Test @TestMetadata("incDecOperatorsInExpectClass.kt") public void testIncDecOperatorsInExpectClass() throws Exception {