diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt index 679f4985fb0..560c054d536 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt @@ -188,7 +188,7 @@ object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker() { else -> {} } // We want to report errors even if a candidate is incompatible, but it's single - val expectedSingleCandidate = compatibilityToMembersMap[Compatible]?.singleOrNull() + val expectedSingleCandidate = symbol.getSingleCompatibleExpectForActualOrNull() ?: symbol.getSingleExpectForActualOrNull() if (expectedSingleCandidate != null) { checkIfExpectHasDefaultArgumentsAndActualizedWithTypealias( diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt index 708226f4791..a72aa014206 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt @@ -27,6 +27,10 @@ fun FirBasedSymbol<*>.getSingleExpectForActualOrNull(): FirBasedSymbol<*>? { return expectForActual?.values?.singleOrNull()?.singleOrNull() } +fun FirBasedSymbol<*>.getSingleCompatibleExpectForActualOrNull(): FirBasedSymbol<*>? { + return expectForActual?.get(ExpectActualCompatibility.Compatible)?.singleOrNull() +} + fun FirBasedSymbol<*>.getSingleCompatibleOrWeaklyIncompatibleExpectForActualOrNull(): FirBasedSymbol<*>? { val expectForActual = expectForActual ?: return null val compatibleOrWeakCompatible: List> =