[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");
|
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
|
@Test
|
||||||
@TestMetadata("actualMissing.kt")
|
@TestMetadata("actualMissing.kt")
|
||||||
public void testActualMissing() throws Exception {
|
public void testActualMissing() throws Exception {
|
||||||
|
|||||||
+6
@@ -343,6 +343,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi
|
|||||||
runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.kt");
|
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
|
@Test
|
||||||
@TestMetadata("actualMissing.kt")
|
@TestMetadata("actualMissing.kt")
|
||||||
public void testActualMissing() throws Exception {
|
public void testActualMissing() throws Exception {
|
||||||
|
|||||||
+2
-1
@@ -63,7 +63,8 @@ class ExpectedActualDeclarationChecker(
|
|||||||
declaration, descriptor, context.trace,
|
declaration, descriptor, context.trace,
|
||||||
checkActualModifier, context.expectActualTracker
|
checkActualModifier, context.expectActualTracker
|
||||||
)
|
)
|
||||||
} else if (descriptor.isActualOrSomeContainerIsActual()) {
|
}
|
||||||
|
if (descriptor.isActualOrSomeContainerIsActual()) {
|
||||||
val allDependsOnModules = moduleStructureOracle.findAllDependsOnPaths(descriptor.module).flatMap { it.nodes }.toHashSet()
|
val allDependsOnModules = moduleStructureOracle.findAllDependsOnPaths(descriptor.module).flatMap { it.nodes }.toHashSet()
|
||||||
checkActualDeclarationHasExpected(
|
checkActualDeclarationHasExpected(
|
||||||
declaration,
|
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!>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<!>
|
<!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");
|
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
|
@Test
|
||||||
@TestMetadata("actualMissing.kt")
|
@TestMetadata("actualMissing.kt")
|
||||||
public void testActualMissing() throws Exception {
|
public void testActualMissing() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user