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 212fa6b2028..1ffcb6cdd8e 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 @@ -343,6 +343,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.kt"); } + @Test + @TestMetadata("actualMethodInExpectClass.kt") + public void testActualMethodInExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.kt"); + } + @Test @TestMetadata("actualMissing.kt") public void testActualMissing() 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 08d3fd7ab62..b09ae473ae0 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 @@ -343,6 +343,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.kt"); } + @Test + @TestMetadata("actualMethodInExpectClass.kt") + public void testActualMethodInExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.kt"); + } + @Test @TestMetadata("actualMissing.kt") public void testActualMissing() throws Exception { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt index c20c5fe73fe..49150e08c7d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt @@ -63,7 +63,8 @@ class ExpectedActualDeclarationChecker( declaration, descriptor, context.trace, checkActualModifier, context.expectActualTracker ) - } else if (descriptor.isActualOrSomeContainerIsActual()) { + } + if (descriptor.isActualOrSomeContainerIsActual()) { val allDependsOnModules = moduleStructureOracle.findAllDependsOnPaths(descriptor.module).flatMap { it.nodes }.toHashSet() checkActualDeclarationHasExpected( declaration, diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.fir.kt new file mode 100644 index 00000000000..933c0c17701 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.fir.kt @@ -0,0 +1,13 @@ +// MODULE: m1-common +// FILE: common.kt + +expect class Foo { + actual fun bar() +} + +// MODULE: m1-jvm()()(m1-common) +// FILE: jvm.kt + +actual class Foo { + actual fun bar() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.kt new file mode 100644 index 00000000000..62e2f1990b3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.kt @@ -0,0 +1,13 @@ +// MODULE: m1-common +// FILE: common.kt + +expect class Foo { + actual fun bar() +} + +// MODULE: m1-jvm()()(m1-common) +// FILE: jvm.kt + +actual class Foo { + actual fun bar() {} +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/incompatibles.kt b/compiler/testData/diagnostics/tests/multiplatform/incompatibles.kt index a6fecf37452..3823cd4dcac 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/incompatibles.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/incompatibles.kt @@ -1,12 +1,12 @@ -header impl class First +header impl class First header expect class Second -header actual class Third +header actual class Third -impl expect class Fourth +impl expect class Fourth impl actual class Fifth -expect actual class Sixth +expect actual class Sixth 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 d4cff3529ab..724942b2387 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 @@ -22122,6 +22122,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.kt"); } + @Test + @TestMetadata("actualMethodInExpectClass.kt") + public void testActualMethodInExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualMethodInExpectClass.kt"); + } + @Test @TestMetadata("actualMissing.kt") public void testActualMissing() throws Exception {