[Misc] Extract method in ExpectedActualDeclarationChecker for clarity

This commit is contained in:
Dmitry Savvinov
2019-04-09 11:41:20 +03:00
parent 309708f433
commit 935c9fce17
@@ -79,10 +79,7 @@ class ExpectedActualDeclarationChecker(val argumentExtractors: List<ActualAnnota
val shouldReportError =
compatibility.allStrongIncompatibilities() ||
Compatible !in compatibility && compatibility.values.flatMapTo(hashSetOf()) { it }.all { actual ->
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<ActualAnnota
}
}
private fun MemberDescriptor.hasNoActualWithDiagnostic(
compatibility: Map<Compatibility, List<MemberDescriptor>>
): 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<MemberDescriptor>) {
if (this is ExpectActualTracker.DoNothing) return