[MPP] Permit const actual properties for non-const expects

It's safe as not having const is more restrictive, therefore can be
allowed in common. Otherwise, it's not possible to declare an expect
declaration for a platform property with `const` modifier in common

KT-18856
This commit is contained in:
Pavel Kirpichenkov
2022-01-18 16:03:28 +03:00
committed by TeamCityServer
parent 8ad06ef725
commit b4c854429f
5 changed files with 26 additions and 16 deletions
@@ -536,14 +536,16 @@ object FirExpectActualResolver {
return ExpectActualCompatibility.Compatible
}
private fun areCompatibleProperties(a: FirPropertySymbol, b: FirPropertySymbol): ExpectActualCompatibility<FirBasedSymbol<*>> {
if (!equalBy(a, b) { p -> p.isVar }) {
return ExpectActualCompatibility.Incompatible.PropertyKind
private fun areCompatibleProperties(
expected: FirPropertySymbol,
actual: FirPropertySymbol,
): ExpectActualCompatibility<FirBasedSymbol<*>> {
return when {
!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
else -> ExpectActualCompatibility.Compatible
}
if (!equalBy(a, b) { p -> listOf(p.isConst, p.isLateInit) }) {
return ExpectActualCompatibility.Incompatible.PropertyModifiers
}
return ExpectActualCompatibility.Compatible
}
// ---------------------------------------- Utils ----------------------------------------