[FIR] Make Stack an abstract class
This commit is contained in:
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.CFGNode
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
|
||||
interface Stack<T> {
|
||||
val size: Int
|
||||
fun top(): T
|
||||
fun pop(): T
|
||||
fun push(value: T)
|
||||
abstract class Stack<T> {
|
||||
abstract val size: Int
|
||||
abstract fun top(): T
|
||||
abstract fun pop(): T
|
||||
abstract fun push(value: T)
|
||||
}
|
||||
|
||||
fun <T> stackOf(vararg values: T): Stack<T> = StackImpl(*values)
|
||||
@@ -22,7 +22,7 @@ val Stack<*>.isEmpty: Boolean get() = size == 0
|
||||
val Stack<*>.isNotEmpty: Boolean get() = size != 0
|
||||
fun <T> Stack<T>.topOrNull(): T? = if (size == 0) null else top()
|
||||
|
||||
private class StackImpl<T>(vararg values: T) : Stack<T> {
|
||||
private class StackImpl<T>(vararg values: T) : Stack<T>() {
|
||||
private val stack = mutableListOf(*values)
|
||||
|
||||
override fun top(): T = stack[stack.size - 1]
|
||||
@@ -35,7 +35,7 @@ private class StackImpl<T>(vararg values: T) : Stack<T> {
|
||||
override val size: Int get() = stack.size
|
||||
}
|
||||
|
||||
class NodeStorage<T : FirElement, N : CFGNode<T>>() : Stack<N> {
|
||||
class NodeStorage<T : FirElement, N : CFGNode<T>> : Stack<N>(){
|
||||
private val stack: Stack<N> = StackImpl()
|
||||
private val map: MutableMap<T, N> = mutableMapOf()
|
||||
|
||||
@@ -57,7 +57,7 @@ class NodeStorage<T : FirElement, N : CFGNode<T>>() : Stack<N> {
|
||||
}
|
||||
}
|
||||
|
||||
class SymbolBasedNodeStorage<T, N : CFGNode<T>> : Stack<N> where T : FirElement {
|
||||
class SymbolBasedNodeStorage<T, N : CFGNode<T>> : Stack<N>() where T : FirElement {
|
||||
private val stack: Stack<N> = StackImpl()
|
||||
private val map: MutableMap<FirBasedSymbol<*>, N> = mutableMapOf()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user