From 6e79709ef1ab274bb3efc33da6809e2d3f13d6db Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 21 Apr 2017 12:09:53 +0300 Subject: [PATCH] Simplify helper methods in SymbolTable auxiliary classes --- .../kotlin/psi2ir/generators/SymbolTable.kt | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/SymbolTable.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/SymbolTable.kt index d810d30e13a..0827f7456ff 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/SymbolTable.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/SymbolTable.kt @@ -32,39 +32,28 @@ class SymbolTable { protected abstract fun get(d: D): S? protected abstract fun set(d: D, s: S) - fun markAsUnbound(s: S) { - assert(unboundSymbols.add(s)) { - "Symbol for ${s.descriptor} was already referenced" - } - } - - fun markAsBound(s: S) { - unboundSymbols.remove(s) - } - inline fun declare(d: D, createSymbol: () -> S, createOwner: (S) -> B): B { - val symbol = getOrCreateSymbol(d, createSymbol) - val owner = createOwner(symbol) - return owner - } - - inline fun getOrCreateSymbol(d: D, createSymbol: () -> S): S { val existing = get(d) - return if (existing == null) { + val symbol = if (existing == null) { val new = createSymbol() set(d, new) new } else { - markAsBound(existing) + unboundSymbols.remove(existing) existing } + val owner = createOwner(symbol) + return owner } inline fun referenced(d: D, createSymbol: () -> S): S { val s = get(d) if (s == null) { - val new = createSymbol().also { markAsUnbound(it) } + val new = createSymbol() + assert(unboundSymbols.add(new)) { + "Symbol for ${new.descriptor} was already referenced" + } set(d, new) return new }