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:
Nikita Bobko
2023-09-05 16:20:52 +02:00
committed by Space Team
parent 238344758b
commit 7667b36aa0
6 changed files with 42 additions and 0 deletions
@@ -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 {
@@ -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 {
@@ -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
@@ -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() {}
}
@@ -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