Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/AbstractToolConfig.kt
T
Ilya Kirillov 1bbcae5ed2 [FIR] fix resolve contract violation from scopes
We cannot call lazy resolve to STATUS phase from scopes as scopes may be accessed on a STATUS phase or earlier

^KT-54890
^KTIJ-23587 fixed
2023-01-13 21:32:51 +00:00

69 lines
1.5 KiB
Kotlin
Vendored

// FILE: AbstractToolConfig.kt
abstract class AbstractToolConfig {
private val platformManager = platformManager()
private val targetManager = platformManager.targetManager()
val target = targetManager.target
protected val platform = platformManager.platform(target)
val llvmHome = platform.absoluteLlvmHome
abstract fun platformManager(): PlatformManager
}
// FILE: Platform.kt
class Platform(val configurables: Configurables) : Configurables by configurables
abstract class PlatformManager : HostManager() {
private val loaders = enabled.map {
it to loadConfigurables(it)
}.toMap()
private val platforms = loaders.map {
it.key to Platform(it.value)
}.toMap()
abstract fun targetManager(userRequest: String? = null): TargetManager
fun platform(target: KonanTarget) = platforms.getValue(target)
abstract fun loadConfigurables(target: KonanTarget): Configurables
}
// FILE: HostManager.kt
open class HostManager {
val enabled: List<KonanTarget>
get() = emptyList()
}
// FILE: Configurables.kt
interface Configurables {
val llvmHome get() = hostString("llvmHome")
val absoluteLlvmHome get() = absolute(llvmHome)
fun absolute(value: String?): String
fun hostString(key: String): String?
}
// FILE: KonanTarget.kt
sealed class KonanTarget {
object ANDROID : KonanTarget()
object IOS : KonanTarget()
}
// FILE: TargetManager.kt
interface TargetManager {
val target: KonanTarget
}