[K2, MPP] Cleanup, remove unused FirDeclaration.actualForExpectMap

The concept of actual for expect map is broken and won't work in IDE
properly, since to fill such map we need to analyze all
dependant modules
This commit is contained in:
Simon Ogorodnik
2023-03-20 23:04:52 +01:00
committed by Space Team
parent 2302e14dd6
commit a5a3c1ff8d
2 changed files with 0 additions and 40 deletions
@@ -89,12 +89,5 @@ open class FirExpectActualMatcherTransformer(
scopeSession scopeSession
) ?: mapOf() ) ?: mapOf()
memberDeclaration.expectForActual = expectForActualData memberDeclaration.expectForActual = expectForActualData
for ((compatibility, expectSymbols) in expectForActualData) {
if (compatibility.compatible) {
for (expectSymbol in expectSymbols) {
expectSymbol.fir.setActualForExpect(session, actualSymbol)
}
}
}
} }
} }
@@ -5,23 +5,19 @@
package org.jetbrains.kotlin.fir.declarations package org.jetbrains.kotlin.fir.declarations
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
import org.jetbrains.kotlin.resolve.multiplatform.compatible import org.jetbrains.kotlin.resolve.multiplatform.compatible
import java.util.*
private object ExpectForActualAttributeKey : FirDeclarationDataKey() private object ExpectForActualAttributeKey : FirDeclarationDataKey()
private object ActualForExpectAttributeKey : FirDeclarationDataKey()
typealias ExpectForActualData = Map<ExpectActualCompatibility<FirBasedSymbol<*>>, List<FirBasedSymbol<*>>> typealias ExpectForActualData = Map<ExpectActualCompatibility<FirBasedSymbol<*>>, List<FirBasedSymbol<*>>>
@SymbolInternals @SymbolInternals
var FirDeclaration.expectForActual: ExpectForActualData? by FirDeclarationDataRegistry.data(ExpectForActualAttributeKey) var FirDeclaration.expectForActual: ExpectForActualData? by FirDeclarationDataRegistry.data(ExpectForActualAttributeKey)
private var FirDeclaration.actualForExpectMap: WeakHashMap<FirSession, FirBasedSymbol<*>>? by FirDeclarationDataRegistry.data(ActualForExpectAttributeKey)
fun FirFunctionSymbol<*>.getSingleCompatibleExpectForActualOrNull() = fun FirFunctionSymbol<*>.getSingleCompatibleExpectForActualOrNull() =
(this as FirBasedSymbol<*>).getSingleCompatibleExpectForActualOrNull() as? FirFunctionSymbol<*> (this as FirBasedSymbol<*>).getSingleCompatibleExpectForActualOrNull() as? FirFunctionSymbol<*>
@@ -47,32 +43,3 @@ val FirBasedSymbol<*>.expectForActual: ExpectForActualData?
return fir.expectForActual return fir.expectForActual
} }
private fun FirDeclaration.getOrCreateActualForExpectMap(): WeakHashMap<FirSession, FirBasedSymbol<*>> {
var map = actualForExpectMap
if (map != null) return map
synchronized(this) {
map = actualForExpectMap
if (map == null) {
map = WeakHashMap()
actualForExpectMap = map
}
}
return map!!
}
@SymbolInternals
fun FirDeclaration.getActualForExpect(useSiteSession: FirSession): FirBasedSymbol<*>? {
return actualForExpectMap?.get(useSiteSession)
}
fun FirBasedSymbol<*>.getActualForExpect(session: FirSession): FirBasedSymbol<*>? {
lazyResolveToPhase(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
return fir.getActualForExpect(session)
}
@SymbolInternals
fun FirDeclaration.setActualForExpect(useSiteSession: FirSession, actualSymbol: FirBasedSymbol<*>) {
val map = getOrCreateActualForExpectMap()
map[useSiteSession] = actualSymbol
}