Migration: make header/impl/expect/actual contradictory to each other
This commit is contained in:
@@ -129,10 +129,10 @@ private val MODIFIERS_TO_REPLACE = mapOf(
|
|||||||
PROTECTED_KEYWORD to listOf(PUBLIC_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD),
|
PROTECTED_KEYWORD to listOf(PUBLIC_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD),
|
||||||
PRIVATE_KEYWORD to listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, INTERNAL_KEYWORD),
|
PRIVATE_KEYWORD to listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, INTERNAL_KEYWORD),
|
||||||
INTERNAL_KEYWORD to listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD),
|
INTERNAL_KEYWORD to listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD),
|
||||||
HEADER_KEYWORD to listOf(IMPL_KEYWORD, ACTUAL_KEYWORD),
|
HEADER_KEYWORD to listOf(IMPL_KEYWORD, ACTUAL_KEYWORD, EXPECT_KEYWORD),
|
||||||
IMPL_KEYWORD to listOf(HEADER_KEYWORD, EXPECT_KEYWORD),
|
IMPL_KEYWORD to listOf(HEADER_KEYWORD, EXPECT_KEYWORD, ACTUAL_KEYWORD),
|
||||||
EXPECT_KEYWORD to listOf(IMPL_KEYWORD, ACTUAL_KEYWORD),
|
EXPECT_KEYWORD to listOf(IMPL_KEYWORD, ACTUAL_KEYWORD, HEADER_KEYWORD),
|
||||||
ACTUAL_KEYWORD to listOf(HEADER_KEYWORD, EXPECT_KEYWORD)
|
ACTUAL_KEYWORD to listOf(HEADER_KEYWORD, EXPECT_KEYWORD, IMPL_KEYWORD)
|
||||||
)
|
)
|
||||||
|
|
||||||
private val MODIFIERS_ORDER = listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD,
|
private val MODIFIERS_ORDER = listOf(PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD,
|
||||||
|
|||||||
@@ -189,9 +189,12 @@ object ModifierCheckerCore {
|
|||||||
// (see the KEEP https://github.com/Kotlin/KEEP/blob/master/proposals/sealed-class-inheritance.md)
|
// (see the KEEP https://github.com/Kotlin/KEEP/blob/master/proposals/sealed-class-inheritance.md)
|
||||||
result += incompatibilityRegister(SEALED_KEYWORD, INNER_KEYWORD)
|
result += incompatibilityRegister(SEALED_KEYWORD, INNER_KEYWORD)
|
||||||
|
|
||||||
// lateinit is incompatible with header
|
// lateinit is incompatible with header / expect
|
||||||
result += incompatibilityRegister(LATEINIT_KEYWORD, HEADER_KEYWORD, EXPECT_KEYWORD)
|
result += incompatibilityRegister(LATEINIT_KEYWORD, HEADER_KEYWORD, EXPECT_KEYWORD)
|
||||||
|
|
||||||
|
// header / expect / impl / actual are all incompatible
|
||||||
|
result += incompatibilityRegister(HEADER_KEYWORD, EXPECT_KEYWORD, IMPL_KEYWORD, ACTUAL_KEYWORD)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// !LANGUAGE: +MultiPlatformProjects
|
||||||
|
|
||||||
|
<!DEPRECATED_MODIFIER_FOR_TARGET, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>impl<!> class <!NO_ACTUAL_FOR_EXPECT!>First<!>
|
||||||
|
|
||||||
|
<!DEPRECATED_MODIFIER_FOR_TARGET, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>expect<!> class <!NO_ACTUAL_FOR_EXPECT!>Second<!>
|
||||||
|
|
||||||
|
<!DEPRECATED_MODIFIER_FOR_TARGET, INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!NO_ACTUAL_FOR_EXPECT!>Third<!>
|
||||||
|
|
||||||
|
<!DEPRECATED_MODIFIER_FOR_TARGET, INCOMPATIBLE_MODIFIERS!>impl<!> <!INCOMPATIBLE_MODIFIERS!>expect<!> class <!NO_ACTUAL_FOR_EXPECT!>Fourth<!>
|
||||||
|
|
||||||
|
<!DEPRECATED_MODIFIER_FOR_TARGET, INCOMPATIBLE_MODIFIERS!>impl<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!ACTUAL_WITHOUT_EXPECT!>Fifth<!>
|
||||||
|
|
||||||
|
<!INCOMPATIBLE_MODIFIERS!>expect<!> <!INCOMPATIBLE_MODIFIERS!>actual<!> class <!NO_ACTUAL_FOR_EXPECT!>Sixth<!>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public final actual class Fifth {
|
||||||
|
public constructor Fifth()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
@@ -13843,6 +13843,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("incompatibles.kt")
|
||||||
|
public void testIncompatibles() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/incompatibles.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("modifierApplicability.kt")
|
@TestMetadata("modifierApplicability.kt")
|
||||||
public void testModifierApplicability() throws Exception {
|
public void testModifierApplicability() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.kt");
|
||||||
|
|||||||
+6
@@ -13843,6 +13843,12 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("incompatibles.kt")
|
||||||
|
public void testIncompatibles() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/incompatibles.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("modifierApplicability.kt")
|
@TestMetadata("modifierApplicability.kt")
|
||||||
public void testModifierApplicability() throws Exception {
|
public void testModifierApplicability() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/multiplatform/modifierApplicability.kt");
|
||||||
|
|||||||
@@ -47,11 +47,9 @@ class ReplaceModifierFix(
|
|||||||
when (modifier) {
|
when (modifier) {
|
||||||
KtTokens.HEADER_KEYWORD -> {
|
KtTokens.HEADER_KEYWORD -> {
|
||||||
element.addModifier(KtTokens.EXPECT_KEYWORD)
|
element.addModifier(KtTokens.EXPECT_KEYWORD)
|
||||||
element.removeModifier(KtTokens.HEADER_KEYWORD)
|
|
||||||
}
|
}
|
||||||
KtTokens.IMPL_KEYWORD -> {
|
KtTokens.IMPL_KEYWORD -> {
|
||||||
element.addModifier(KtTokens.ACTUAL_KEYWORD)
|
element.addModifier(KtTokens.ACTUAL_KEYWORD)
|
||||||
element.removeModifier(KtTokens.IMPL_KEYWORD)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user