Force recompile all call-sites of ExpectedActualResolver.{findActualForExpected, findExpectedForActual}
This is needed to workaround broken incremental compilation in JPS in Kotlin plugin. The incremental compilation bug is reported KT-60759 In Kotlin plugin I created the same commit which changes the name of the function on the call-site. Review: https://jetbrains.team/p/kt/reviews/11039/timeline After a few days in master branch, I will revert this commit
This commit is contained in:
+1
-1
@@ -27,7 +27,7 @@ internal class KtFe10MultiplatformInfoProvider(
|
||||
val memberDescriptor = (getSymbolDescriptor(actual) as? MemberDescriptor)?.takeIf { it.isActual } ?: return null
|
||||
|
||||
val expectedCompatibilityMap =
|
||||
ExpectedActualResolver.findExpectedForActual(memberDescriptor) ?: return null
|
||||
ExpectedActualResolver.findExpectedForActual_incrementalCompilationWorkaround(memberDescriptor) ?: return null
|
||||
|
||||
val expectsForActual = (expectedCompatibilityMap[ExpectActualCompatibility.Compatible]
|
||||
?: expectedCompatibilityMap.values.flatten())
|
||||
|
||||
+3
-3
@@ -270,7 +270,7 @@ class ExpectedActualDeclarationChecker(
|
||||
compatibility: Map<ExpectActualCompatibility<MemberDescriptor>, List<MemberDescriptor>>
|
||||
): Boolean {
|
||||
return compatibility.values.flatMapTo(hashSetOf()) { it }.all { actual ->
|
||||
val expectedOnes = ExpectedActualResolver.findExpectedForActual(actual, onlyFromThisModule(module))
|
||||
val expectedOnes = ExpectedActualResolver.findExpectedForActual_incrementalCompilationWorkaround(actual, onlyFromThisModule(module))
|
||||
expectedOnes != null && Compatible in expectedOnes.keys
|
||||
}
|
||||
}
|
||||
@@ -298,7 +298,7 @@ class ExpectedActualDeclarationChecker(
|
||||
moduleVisibilityFilter: ModuleFilter
|
||||
) {
|
||||
val compatibility = ExpectedActualResolver
|
||||
.findExpectedForActual(descriptor, moduleVisibilityFilter, shouldCheckAbsenceOfDefaultParamsInActual = true)
|
||||
.findExpectedForActual_incrementalCompilationWorkaround(descriptor, moduleVisibilityFilter, shouldCheckAbsenceOfDefaultParamsInActual = true)
|
||||
?: return
|
||||
|
||||
checkAmbiguousExpects(compatibility, trace, reportOn, descriptor)
|
||||
@@ -337,7 +337,7 @@ class ExpectedActualDeclarationChecker(
|
||||
return actualMember != null &&
|
||||
actualMember.isExplicitActualDeclaration() &&
|
||||
!incompatibility.allStrongIncompatibilities() &&
|
||||
ExpectedActualResolver.findExpectedForActual(
|
||||
ExpectedActualResolver.findExpectedForActual_incrementalCompilationWorkaround(
|
||||
actualMember, onlyFromThisModule(expectedMember.module)
|
||||
)?.values?.singleOrNull()?.singleOrNull() == expectedMember
|
||||
}
|
||||
|
||||
+4
-3
@@ -54,7 +54,8 @@ object ExpectedActualResolver {
|
||||
}
|
||||
}
|
||||
|
||||
fun findExpectedForActual(
|
||||
// incremental compilation workaround for KT-60759
|
||||
fun findExpectedForActual_incrementalCompilationWorkaround(
|
||||
actual: MemberDescriptor,
|
||||
moduleFilter: (ModuleDescriptor) -> Boolean = allModulesProvidingExpectsFor(actual.module),
|
||||
shouldCheckAbsenceOfDefaultParamsInActual: Boolean = false,
|
||||
@@ -67,7 +68,7 @@ object ExpectedActualResolver {
|
||||
is ClassifierDescriptorWithTypeParameters -> {
|
||||
// TODO: replace with 'singleOrNull' as soon as multi-module diagnostic tests are refactored
|
||||
val expectedClass =
|
||||
findExpectedForActual(container, moduleFilter, shouldCheckAbsenceOfDefaultParamsInActual)?.values
|
||||
findExpectedForActual_incrementalCompilationWorkaround(container, moduleFilter, shouldCheckAbsenceOfDefaultParamsInActual)?.values
|
||||
?.firstOrNull()?.firstOrNull() as? ClassDescriptor
|
||||
with(context) {
|
||||
expectedClass?.getMembersForExpectClass(actual.name)?.filterIsInstance<CallableMemberDescriptor>().orEmpty()
|
||||
@@ -183,7 +184,7 @@ fun MemberDescriptor.findAnyActualsForExpected(
|
||||
fun MemberDescriptor.findCompatibleExpectsForActual(
|
||||
moduleFilter: ModuleFilter = allModulesProvidingExpectsFor(module)
|
||||
): List<MemberDescriptor> =
|
||||
ExpectedActualResolver.findExpectedForActual(this, moduleFilter)?.get(Compatible).orEmpty()
|
||||
ExpectedActualResolver.findExpectedForActual_incrementalCompilationWorkaround(this, moduleFilter)?.get(Compatible).orEmpty()
|
||||
|
||||
fun DeclarationDescriptor.findExpects(): List<MemberDescriptor> {
|
||||
if (this !is MemberDescriptor) return emptyList()
|
||||
|
||||
Reference in New Issue
Block a user