KMP: Put "prohibit member scope mismatch for non-final expect" under the flag
^KT-61668 Fixed Review: https://jetbrains.team/p/kt/reviews/12062/timeline
This commit is contained in:
+6
@@ -610,6 +610,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/injectVarargParameterOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("memberScopeMismatch_oldLanguageVersion.kt")
|
||||
public void testMemberScopeMismatch_oldLanguageVersion() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/memberScopeMismatch_oldLanguageVersion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("nestedExpectOpenClass.kt")
|
||||
public void testNestedExpectOpenClass() throws Exception {
|
||||
|
||||
+6
@@ -610,6 +610,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/injectVarargParameterOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("memberScopeMismatch_oldLanguageVersion.kt")
|
||||
public void testMemberScopeMismatch_oldLanguageVersion() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/memberScopeMismatch_oldLanguageVersion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("nestedExpectOpenClass.kt")
|
||||
public void testNestedExpectOpenClass() throws Exception {
|
||||
|
||||
+1
@@ -25,6 +25,7 @@ import kotlin.contracts.contract
|
||||
|
||||
object ActualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker : DeclarationChecker {
|
||||
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
||||
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.MultiplatformRestrictions)) return
|
||||
val (actual, expect) = matchActualWithNonFinalExpect(declaration, descriptor, context) ?: return
|
||||
|
||||
// The explicit casts won't be necessary when we start compiling kotlin with K2. K1 doesn't build CFG properly
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// FIR_IDENTICAL
|
||||
// LANGUAGE: -MultiplatformRestrictions
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
expect open class Foo {
|
||||
fun existingMethod()
|
||||
val existingParam: Int
|
||||
}
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual open class Foo {
|
||||
actual fun existingMethod() {}
|
||||
actual val existingParam: Int = 904
|
||||
|
||||
fun injectedMethod() {}
|
||||
}
|
||||
Generated
+6
@@ -23605,6 +23605,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/injectVarargParameterOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("memberScopeMismatch_oldLanguageVersion.kt")
|
||||
public void testMemberScopeMismatch_oldLanguageVersion() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/memberScopeMismatch_oldLanguageVersion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("nestedExpectOpenClass.kt")
|
||||
public void testNestedExpectOpenClass() throws Exception {
|
||||
|
||||
@@ -278,6 +278,10 @@ enum class LanguageFeature(
|
||||
ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated(sinceVersion = KOTLIN_1_9), // KT-36770
|
||||
NoSourceCodeInNotNullAssertionExceptions(KOTLIN_1_9, sinceApiVersion = ApiVersion.KOTLIN_1_4, kind = OTHER), // KT-57570
|
||||
|
||||
// 1.9.20 KMP stabilization. Unfortunately, we don't have 1.9.20 LV. So LV=1.9 is the best we can do.
|
||||
// At least there won't be false positives for 1.8 users
|
||||
MultiplatformRestrictions(KOTLIN_1_9, kind = BUG_FIX), // KT-61668
|
||||
|
||||
// End of 1.* language features --------------------------------------------------
|
||||
|
||||
// 2.0
|
||||
|
||||
Reference in New Issue
Block a user