diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt index 8527098a522..a09ccca2efe 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt @@ -79,10 +79,7 @@ class ExpectedActualDeclarationChecker(val argumentExtractors: List - val expectedOnes = ExpectedActualResolver.findExpectedForActual(actual, descriptor.module) - expectedOnes != null && Compatible in expectedOnes.keys - } + Compatible !in compatibility && descriptor.hasNoActualWithDiagnostic(compatibility) if (shouldReportError) { assert(compatibility.keys.all { it is Incompatible }) @@ -99,6 +96,15 @@ class ExpectedActualDeclarationChecker(val argumentExtractors: List> + ): Boolean { + return compatibility.values.flatMapTo(hashSetOf()) { it }.all { actual -> + val expectedOnes = ExpectedActualResolver.findExpectedForActual(actual, module) + expectedOnes != null && Compatible in expectedOnes.keys + } + } + private fun ExpectActualTracker.reportExpectActual(expected: MemberDescriptor, actualMembers: Sequence) { if (this is ExpectActualTracker.DoNothing) return