[MPP] Forbid actual member in expect class
Such member descriptor will be actual and expect at the same time, so we should run both checks. ^KT-40903 Fixed
This commit is contained in:
committed by
Space Team
parent
c3734aa9ce
commit
bcf4528763
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+2
-1
@@ -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,
|
||||
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class Foo {
|
||||
<!ACTUAL_WITHOUT_EXPECT!>actual fun bar()<!>
|
||||
}
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual class Foo {
|
||||
actual fun bar() {}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect class Foo {
|
||||
actual fun <!ACTUAL_WITHOUT_EXPECT{JVM}!>bar<!>()
|
||||
}
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual class Foo {
|
||||
actual fun bar() {}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>impl<!> class <!NO_ACTUAL_FOR_EXPECT!>First<!>
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>impl<!> class <!ACTUAL_WITHOUT_EXPECT, NO_ACTUAL_FOR_EXPECT!>First<!>
|
||||
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>expect<!> class <!NO_ACTUAL_FOR_EXPECT!>Second<!>
|
||||
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!NO_ACTUAL_FOR_EXPECT!>Third<!>
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!ACTUAL_WITHOUT_EXPECT, NO_ACTUAL_FOR_EXPECT!>Third<!>
|
||||
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>impl<!> <!INCOMPATIBLE_MODIFIERS!>expect<!> class <!NO_ACTUAL_FOR_EXPECT!>Fourth<!>
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>impl<!> <!INCOMPATIBLE_MODIFIERS!>expect<!> class <!ACTUAL_WITHOUT_EXPECT, NO_ACTUAL_FOR_EXPECT!>Fourth<!>
|
||||
|
||||
<!DEPRECATED_MODIFIER, INCOMPATIBLE_MODIFIERS!>impl<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!ACTUAL_WITHOUT_EXPECT!>Fifth<!>
|
||||
|
||||
<!INCOMPATIBLE_MODIFIERS!>expect<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!NO_ACTUAL_FOR_EXPECT!>Sixth<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>expect<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!ACTUAL_WITHOUT_EXPECT, NO_ACTUAL_FOR_EXPECT!>Sixth<!>
|
||||
|
||||
Generated
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user