[FE] Check visibilities of expected and actual property setters are compatible
^KT-30905 Fixed
This commit is contained in:
committed by
Space Team
parent
9044dfe394
commit
c718c77c43
+6
@@ -127,6 +127,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/smartcastOnMemberPropertyFromCommonClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("varSetterVisibility.kt")
|
||||
public void testVarSetterVisibility() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/varSetterVisibility.kt");
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/tests/multiplatform/defaultArguments")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
+6
@@ -127,6 +127,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/smartcastOnMemberPropertyFromCommonClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("varSetterVisibility.kt")
|
||||
public void testVarSetterVisibility() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/multiplatform/varSetterVisibility.kt");
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/tests/multiplatform/defaultArguments")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
+13
@@ -523,10 +523,23 @@ object FirExpectActualResolver {
|
||||
!equalBy(expected, actual) { p -> p.isVar } -> ExpectActualCompatibility.Incompatible.PropertyKind
|
||||
!equalBy(expected, actual) { p -> p.isLateInit } -> ExpectActualCompatibility.Incompatible.PropertyLateinitModifier
|
||||
expected.isConst && !actual.isConst -> ExpectActualCompatibility.Incompatible.PropertyConstModifier
|
||||
!arePropertySettersWithCompatibleVisibilities(expected, actual) -> ExpectActualCompatibility.Incompatible.PropertySetterVisibility
|
||||
else -> ExpectActualCompatibility.Compatible
|
||||
}
|
||||
}
|
||||
|
||||
private fun arePropertySettersWithCompatibleVisibilities(
|
||||
expected: FirPropertySymbol,
|
||||
actual: FirPropertySymbol,
|
||||
): Boolean {
|
||||
val expectedSetterStatus = expected.setterSymbol?.resolvedStatus
|
||||
val actualSetterStatus = actual.setterSymbol?.resolvedStatus
|
||||
if (expectedSetterStatus == null || actualSetterStatus == null) {
|
||||
return true
|
||||
}
|
||||
return areDeclarationsWithCompatibleVisibilities(expectedSetterStatus, actualSetterStatus)
|
||||
}
|
||||
|
||||
// ---------------------------------------- Utils ----------------------------------------
|
||||
|
||||
private fun List<FirValueParameterSymbol>.toTypeList(substitutor: ConeSubstitutor): List<ConeKotlinType> {
|
||||
|
||||
Reference in New Issue
Block a user