org.jetbrains.kotlin.fir.caches.FirCacheWithPostCompute.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.caches
abstract class FirCache {
abstract fun getValue(key: K, context: CONTEXT): V
abstract fun getValueIfComputed(key: K): V?
}
@Suppress("NOTHING_TO_INLINE")
inline fun FirCache.getValue(key: K): V =
getValue(key, null)
operator fun FirCache.contains(key: K): Boolean {
return getValueIfComputed(key) != null
}
class FirLazyValue(private val cache: FirCache) {
fun getValue(context: CONTEXT): V {
return cache.getValue(Unit, context)
}
}
@Suppress("NOTHING_TO_INLINE")
inline fun FirLazyValue.getValue(): V {
return getValue(null)
}