From c90556a883003e3fec5bb7da11116fbcdfa7c4a1 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 21 Oct 2020 22:26:06 +0300 Subject: [PATCH] [Private fake overrides] FakeOverrideDeclarationTable for private fake override construction --- .../backend/common/overrides/FakeOverrides.kt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt index 5fc96b813b3..1cdfa73af65 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.backend.common.overrides +import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable +import org.jetbrains.kotlin.backend.common.serialization.GlobalDeclarationTable import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns @@ -36,8 +38,20 @@ import org.jetbrains.kotlin.ir.types.getClass import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.types.Variance -interface PlatformFakeOverrideClassFilter { - fun constructFakeOverrides(clazz: IrClass): Boolean = true +class FakeOverrideGlobalDeclarationTable(signatureSerializer: IdSignatureSerializer) + : GlobalDeclarationTable(signatureSerializer, signatureSerializer.mangler) { + + fun clear() = table.clear() +} +class FakeOverrideDeclarationTable( + signatureSerializer: IdSignatureSerializer, + globalTable: FakeOverrideGlobalDeclarationTable = FakeOverrideGlobalDeclarationTable(signatureSerializer) +) : DeclarationTable(globalTable) { + override val globalDeclarationTable: FakeOverrideGlobalDeclarationTable = globalTable + fun clear() { + this.table.clear() + globalDeclarationTable.clear() + } } object DefaultFakeOverrideClassFilter : PlatformFakeOverrideClassFilter