From ba541bd53bad1d5c07d8b0e2670462cbdc049041 Mon Sep 17 00:00:00 2001 From: Anton Bannykh Date: Tue, 6 Jul 2021 17:24:56 +0300 Subject: [PATCH] IR: allow SymbolTable descendants --- .../jetbrains/kotlin/ir/util/SymbolTable.kt | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index 9bbb0a8af36..eb28c608382 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -60,7 +60,7 @@ interface ReferenceSymbolTable { fun leaveScope(owner: IrDeclaration) } -class SymbolTable( +open class SymbolTable( val signaturer: IdSignatureComposer, val irFactory: IrFactory, val nameProvider: NameProvider = NameProvider.DEFAULT @@ -71,7 +71,7 @@ class SymbolTable( @Suppress("LeakingThis") val lazyWrapper = IrLazySymbolTable(this) - private abstract class SymbolTableBase>(val lock: IrLock) { + protected abstract class SymbolTableBase>(val lock: IrLock) { val unboundSymbols = linkedSetOf() abstract fun get(d: D): S? @@ -212,7 +212,7 @@ class SymbolTable( } } - private open inner class FlatSymbolTable> : + protected open inner class FlatSymbolTable> : SymbolTableBase(lock) { val descriptorToSymbol = linkedMapOf() val idSigToSymbol = linkedMapOf() @@ -249,11 +249,11 @@ class SymbolTable( override fun signature(descriptor: ClassDescriptor): IdSignature? = signaturer.composeEnumEntrySignature(descriptor) } - private inner class FieldSymbolTable : FlatSymbolTable() { + protected inner class FieldSymbolTable : FlatSymbolTable() { override fun signature(descriptor: PropertyDescriptor): IdSignature? = signaturer.composeFieldSignature(descriptor) } - private inner class ScopedSymbolTable> + protected inner class ScopedSymbolTable> : SymbolTableBase(lock) { inner class Scope(val owner: IrSymbol, val parent: Scope?) { private val descriptorToSymbol = linkedMapOf() @@ -308,7 +308,7 @@ class SymbolTable( fun dump(): String = dumpTo(StringBuilder()).toString() } - private var currentScope: Scope? = null + protected var currentScope: Scope? = null override fun get(d: D): S? { val scope = currentScope ?: return null @@ -372,13 +372,13 @@ class SymbolTable( private val classSymbolTable = FlatSymbolTable() private val constructorSymbolTable = FlatSymbolTable() private val enumEntrySymbolTable = EnumEntrySymbolTable() - private val fieldSymbolTable = FieldSymbolTable() + protected val fieldSymbolTable = FieldSymbolTable() private val simpleFunctionSymbolTable = FlatSymbolTable() private val propertySymbolTable = FlatSymbolTable() private val typeAliasSymbolTable = FlatSymbolTable() - private val globalTypeParameterSymbolTable = FlatSymbolTable() - private val scopedTypeParameterSymbolTable by threadLocal { + protected val globalTypeParameterSymbolTable = FlatSymbolTable() + protected val scopedTypeParameterSymbolTable by threadLocal { ScopedSymbolTable() } private val valueParameterSymbolTable by threadLocal { @@ -703,7 +703,7 @@ class SymbolTable( override fun referenceField(descriptor: PropertyDescriptor) = fieldSymbolTable.referenced(descriptor) { createFieldSymbol(descriptor) } - override fun referenceFieldFromLinker(sig: IdSignature) = + override fun referenceFieldFromLinker(sig: IdSignature): IrFieldSymbol = fieldSymbolTable.run { if (sig.isPubliclyVisible) IrFieldPublicSymbolImpl(sig) else IrFieldSymbolImpl() } @@ -928,7 +928,7 @@ class SymbolTable( typeParameterFactory ) - fun declareGlobalTypeParameter( + open fun declareGlobalTypeParameter( sig: IdSignature, symbolFactory: () -> IrTypeParameterSymbol, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter @@ -963,6 +963,7 @@ class SymbolTable( typeParameterFactory ) + @Suppress("UNUSED_PARAMETER") fun declareScopedTypeParameter( sig: IdSignature, symbolFactory: (IdSignature) -> IrTypeParameterSymbol,