Move ExpectActualCompatibility to :compiler:resolution.common

This commit is contained in:
Dmitriy Novozhilov
2021-05-21 15:14:03 +03:00
committed by teamcityserver
parent 950db81aa4
commit 6e83820f97
9 changed files with 153 additions and 117 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver
internal fun MemberDescriptor.expectedDescriptors() =
@@ -74,7 +75,7 @@ fun ModuleDescriptor.hasDeclarationOf(descriptor: MemberDescriptor) = declaratio
private fun ModuleDescriptor.declarationOf(descriptor: MemberDescriptor): DeclarationDescriptor? =
with(ExpectedActualResolver) {
val expectedCompatibilityMap = findExpectedForActual(descriptor, this@declarationOf)
expectedCompatibilityMap?.get(ExpectedActualResolver.Compatibility.Compatible)?.firstOrNull()
expectedCompatibilityMap?.get(ExpectActualCompatibility.Compatible)?.firstOrNull()
?: expectedCompatibilityMap?.values?.flatten()?.firstOrNull()
}
@@ -181,4 +182,4 @@ fun KtDeclaration.runCommandOnAllExpectAndActualDeclaration(
} else {
project.executeCommand(command, command = ::process)
}
}
}
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker.Co
import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver
import org.jetbrains.kotlin.resolve.multiplatform.OptionalAnnotationUtil
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
class OptionalExpectationInspection : AbstractKotlinInspection() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession) =
@@ -43,12 +44,12 @@ class OptionalExpectationInspection : AbstractKotlinInspection() {
for (actualModuleDescriptor in implementingModules) {
val compatibility = ExpectedActualResolver.findActualForExpected(descriptor, actualModuleDescriptor) ?: continue
if (!compatibility.allStrongIncompatibilities() &&
(ExpectedActualResolver.Compatibility.Compatible in compatibility ||
(ExpectActualCompatibility.Compatible in compatibility ||
!compatibility.values.flatMapTo(
hashSetOf()
) { it }.all { actual ->
val expectedOnes = ExpectedActualResolver.findExpectedForActual(actual, descriptor.module)
expectedOnes != null && ExpectedActualResolver.Compatibility.Compatible in expectedOnes.keys
expectedOnes != null && ExpectActualCompatibility.Compatible in expectedOnes.keys
})
) continue
val platform = actualModuleDescriptor.platform ?: continue
@@ -69,4 +70,4 @@ class OptionalExpectationInspection : AbstractKotlinInspection() {
)
}
})
}
}