diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 6ad3ad74827..5eb5d12f31c 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -26676,6 +26676,18 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/hmpp") @TestDataPath("$PROJECT_ROOT") public class Hmpp { + @Test + @TestMetadata("actualizeSubtypeBeforeSupertype.kt") + public void testActualizeSubtypeBeforeSupertype() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt"); + } + + @Test + @TestMetadata("actualizedInPlatformSession.kt") + public void testActualizedInPlatformSession() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt"); + } + @Test public void testAllFilesPresentInHmpp() { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/hmpp"), Pattern.compile("^(.+)\\.(kt|kts)$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); @@ -26687,6 +26699,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/ambiguousActuals.kt"); } + @Test + @TestMetadata("hmppModalityClash.kt") + public void testHmppModalityClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt"); + } + @Test @TestMetadata("hmppRedeclaration.kt") public void testHmppRedeclaration() { @@ -26699,6 +26717,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppRedeclarationWithExpectActualPair.kt"); } + @Test + @TestMetadata("hmppSignatureClash.kt") + public void testHmppSignatureClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt"); + } + @Test @TestMetadata("intermediateActualHasAdditionalSupertypes.kt") public void testIntermediateActualHasAdditionalSupertypes() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 08f1ac4cf05..a27ad376911 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -26676,6 +26676,18 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/hmpp") @TestDataPath("$PROJECT_ROOT") public class Hmpp { + @Test + @TestMetadata("actualizeSubtypeBeforeSupertype.kt") + public void testActualizeSubtypeBeforeSupertype() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt"); + } + + @Test + @TestMetadata("actualizedInPlatformSession.kt") + public void testActualizedInPlatformSession() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt"); + } + @Test public void testAllFilesPresentInHmpp() { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/hmpp"), Pattern.compile("^(.+)\\.(kt|kts)$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); @@ -26687,6 +26699,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/ambiguousActuals.kt"); } + @Test + @TestMetadata("hmppModalityClash.kt") + public void testHmppModalityClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt"); + } + @Test @TestMetadata("hmppRedeclaration.kt") public void testHmppRedeclaration() { @@ -26699,6 +26717,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppRedeclarationWithExpectActualPair.kt"); } + @Test + @TestMetadata("hmppSignatureClash.kt") + public void testHmppSignatureClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt"); + } + @Test @TestMetadata("intermediateActualHasAdditionalSupertypes.kt") public void testIntermediateActualHasAdditionalSupertypes() { 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 bdc6b964dc9..0ae46d2b19f 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 @@ -1729,6 +1729,18 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/hmpp") @TestDataPath("$PROJECT_ROOT") public class Hmpp { + @Test + @TestMetadata("actualizeSubtypeBeforeSupertype.kt") + public void testActualizeSubtypeBeforeSupertype() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt"); + } + + @Test + @TestMetadata("actualizedInPlatformSession.kt") + public void testActualizedInPlatformSession() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt"); + } + @Test public void testAllFilesPresentInHmpp() { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/hmpp"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true); @@ -1740,6 +1752,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/ambiguousActuals.kt"); } + @Test + @TestMetadata("hmppModalityClash.kt") + public void testHmppModalityClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt"); + } + @Test @TestMetadata("hmppRedeclaration.kt") public void testHmppRedeclaration() { @@ -1752,6 +1770,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppRedeclarationWithExpectActualPair.kt"); } + @Test + @TestMetadata("hmppSignatureClash.kt") + public void testHmppSignatureClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt"); + } + @Test @TestMetadata("intermediateActualHasAdditionalSupertypes.kt") public void testIntermediateActualHasAdditionalSupertypes() { 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 22f4146ae8c..fd8be3c3b7b 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 @@ -1729,6 +1729,18 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/hmpp") @TestDataPath("$PROJECT_ROOT") public class Hmpp { + @Test + @TestMetadata("actualizeSubtypeBeforeSupertype.kt") + public void testActualizeSubtypeBeforeSupertype() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt"); + } + + @Test + @TestMetadata("actualizedInPlatformSession.kt") + public void testActualizedInPlatformSession() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt"); + } + @Test public void testAllFilesPresentInHmpp() { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/hmpp"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true); @@ -1740,6 +1752,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/ambiguousActuals.kt"); } + @Test + @TestMetadata("hmppModalityClash.kt") + public void testHmppModalityClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt"); + } + @Test @TestMetadata("hmppRedeclaration.kt") public void testHmppRedeclaration() { @@ -1752,6 +1770,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppRedeclarationWithExpectActualPair.kt"); } + @Test + @TestMetadata("hmppSignatureClash.kt") + public void testHmppSignatureClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt"); + } + @Test @TestMetadata("intermediateActualHasAdditionalSupertypes.kt") public void testIntermediateActualHasAdditionalSupertypes() { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt index d48334827eb..1fed054b7c6 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies import org.jetbrains.kotlin.diagnostics.reportOn +import org.jetbrains.kotlin.diagnostics.requireNotNull import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext @@ -33,7 +34,7 @@ import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility @Suppress("DuplicatedCode") -object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker(MppCheckerKind.Common) { +object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker(MppCheckerKind.Platform) { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { if (declaration !is FirMemberDeclaration) return if (!context.session.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects)) { diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.fir.kt new file mode 100644 index 00000000000..5fd59e1b4c2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.fir.kt @@ -0,0 +1,21 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class A() : B +expect class C() : B +expect open class B() + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +actual class A : B() { + // "Nothing to override" in metadata compilation. Unfortunately we don't check metadata compilation in diagnostic tests + override fun foo() {} +} +actual class C : B() { + // Nothing to override in platform compilation. + fun foo() {} +} + +// MODULE: main()()(intermediate) +actual open class B { + open fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt new file mode 100644 index 00000000000..1d74f9144ba --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt @@ -0,0 +1,21 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class A() : B +expect class C() : B +expect open class B() + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +actual class A : B() { + // "Nothing to override" in metadata compilation. Unfortunately we don't check metadata compilation in diagnostic tests + override fun foo() {} +} +actual class C : B() { + // Nothing to override in platform compilation. + fun foo() {} +} + +// MODULE: main()()(intermediate) +actual open class B { + open fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.ll.kt new file mode 100644 index 00000000000..f5bd4e08dd7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.ll.kt @@ -0,0 +1,21 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class A() : B +expect class C() : B +expect open class B() + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +actual class A : B() { + // "Nothing to override" in metadata compilation. Unfortunately we don't check metadata compilation in diagnostic tests + override fun foo() {} +} +actual class C : B() { + // Nothing to override in platform compilation. + fun foo() {} +} + +// MODULE: main()()(intermediate) +actual open class B { + open fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.fir.kt new file mode 100644 index 00000000000..fc057d41f45 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.fir.kt @@ -0,0 +1,17 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class Foo() { + fun foo() +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +expect open class Base() {} + +actual class Foo : Base() { +} + +// MODULE: main()()(intermediate) +actual open class Base { + fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt new file mode 100644 index 00000000000..cb6d1784e21 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt @@ -0,0 +1,17 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class Foo() { + fun foo() +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +expect open class Base() {} + +actual class Foo : Base() { +} + +// MODULE: main()()(intermediate) +actual open class Base { + fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.ll.kt new file mode 100644 index 00000000000..ee1bbcc4fc2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.ll.kt @@ -0,0 +1,17 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class Foo() { + fun foo() +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +expect open class Base() {} + +actual class Foo : Base() { +} + +// MODULE: main()()(intermediate) +actual open class Base { + fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt new file mode 100644 index 00000000000..9ee1f3b371a --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt @@ -0,0 +1,30 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect abstract class Foo() { + abstract fun foo() +} + +class Impl : Foo() {} + +fun common() { + Impl().foo() +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +interface I { + fun foo() +} + +expect open class Base() {} + +actual abstract class Foo : Base(), I { + // In non-KMP world, these two f/o would squash into a single f/o final fun foo() + // f/o abstract fun foo(): Unit in intermediate + // f/o final fun foo(): Unit in platform +} + +// MODULE: main()()(intermediate) +actual open class Base { + fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt new file mode 100644 index 00000000000..8e12c51bd19 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt @@ -0,0 +1,30 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect abstract class Foo() { + abstract fun foo() +} + +class Impl : Foo() {} + +fun common() { + Impl().foo() +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +interface I { + fun foo() +} + +expect open class Base() {} + +actual abstract class Foo : Base(), I { + // In non-KMP world, these two f/o would squash into a single f/o final fun foo() + // f/o abstract fun foo(): Unit in intermediate + // f/o final fun foo(): Unit in platform +} + +// MODULE: main()()(intermediate) +actual open class Base { + fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.ll.kt new file mode 100644 index 00000000000..3191c9795c0 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.ll.kt @@ -0,0 +1,30 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect abstract class Foo() { + abstract fun foo() +} + +class Impl : Foo() {} + +fun common() { + Impl().foo() +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +interface I { + fun foo() +} + +expect open class Base() {} + +actual abstract class Foo : Base(), I { + // In non-KMP world, these two f/o would squash into a single f/o final fun foo() + // f/o abstract fun foo(): Unit in intermediate + // f/o final fun foo(): Unit in platform +} + +// MODULE: main()()(intermediate) +actual open class Base { + fun foo() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.fir.kt new file mode 100644 index 00000000000..e2dcf39a96a --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.fir.kt @@ -0,0 +1,17 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class A { + fun foo(x: String): String +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +expect class B + +// K1 EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE false positive +actual class A { + actual fun foo(x: B) = "a" +} + +// MODULE: main()()(intermediate) +actual typealias B = String diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt new file mode 100644 index 00000000000..13fabce1b7d --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt @@ -0,0 +1,17 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class A { + fun foo(x: String): String +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +expect class B + +// K1 EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE false positive +actual class A { + actual fun foo(x: B) = "a" +} + +// MODULE: main()()(intermediate) +actual typealias B = String diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.ll.kt new file mode 100644 index 00000000000..d76c2b6ae85 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.ll.kt @@ -0,0 +1,17 @@ +// MODULE: common +// TARGET_PLATFORM: Common +expect class A { + fun foo(x: String): String +} + +// MODULE: intermediate()()(common) +// TARGET_PLATFORM: Common +expect class B + +// K1 EXPECT_AND_ACTUAL_IN_THE_SAME_MODULE false positive +actual class A { + actual fun foo(x: B) = "a" +} + +// MODULE: main()()(intermediate) +actual typealias B = String 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 02b91ecf19c..0588cfd6ff9 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 @@ -26676,6 +26676,18 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { @TestMetadata("compiler/testData/diagnostics/tests/multiplatform/hmpp") @TestDataPath("$PROJECT_ROOT") public class Hmpp { + @Test + @TestMetadata("actualizeSubtypeBeforeSupertype.kt") + public void testActualizeSubtypeBeforeSupertype() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizeSubtypeBeforeSupertype.kt"); + } + + @Test + @TestMetadata("actualizedInPlatformSession.kt") + public void testActualizedInPlatformSession() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/actualizedInPlatformSession.kt"); + } + @Test public void testAllFilesPresentInHmpp() { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/multiplatform/hmpp"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); @@ -26687,6 +26699,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/ambiguousActuals.kt"); } + @Test + @TestMetadata("hmppModalityClash.kt") + public void testHmppModalityClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.kt"); + } + @Test @TestMetadata("hmppRedeclaration.kt") public void testHmppRedeclaration() { @@ -26699,6 +26717,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppRedeclarationWithExpectActualPair.kt"); } + @Test + @TestMetadata("hmppSignatureClash.kt") + public void testHmppSignatureClash() { + runTest("compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppSignatureClash.kt"); + } + @Test @TestMetadata("intermediateActualHasAdditionalSupertypes.kt") public void testIntermediateActualHasAdditionalSupertypes() {