[MPP] Introduce allModulesProviding(Expects|Actuals)For filters

This new filters will also take care of filtering out descriptors
that are provided by 'regular' dependencies instead of 'dependsOn'
dependencies.

^KT-50120
This commit is contained in:
sebastian.sellmair
2021-12-20 15:09:51 +01:00
committed by Space
parent d1ce7ae870
commit 2e55b82ba3
10 changed files with 57 additions and 55 deletions
@@ -23,9 +23,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
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.onlyFromThisModule
import org.jetbrains.kotlin.resolve.multiplatform.*
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
// `doRemove` means should expect-declaration be removed from IR
@@ -136,16 +134,13 @@ class ExpectDeclarationRemover(val symbolTable: ReferenceSymbolTable, private va
private fun MemberDescriptor.findActualForExpect(): MemberDescriptor? {
if (!isExpect) error(this)
return with(ExpectedActualResolver) {
findCompatibleActualForExpected(this@findActualForExpect.module).singleOrNull()
}
return findCompatibleActualsForExpected(module).singleOrNull()
}
private fun MemberDescriptor.findExpectForActual(): MemberDescriptor? {
if (!isActual) error(this)
return with(ExpectedActualResolver) {
findCompatibleExpectedForActual(onlyFromThisModule(this@findExpectForActual.module)).singleOrNull()
}
return findCompatibleExpectsForActual().singleOrNull()
}
private fun IrExpression.remapExpectValueSymbols(): IrExpression {
@@ -116,4 +116,4 @@ class ExpectActualTable(val expectDescriptorToSymbol: MutableMap<DeclarationDesc
table.put(expect, declaration.symbol)
}
}
}
}