From 7737c765400d234edf04b415a3eb33af6d6feba5 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Wed, 6 May 2020 12:54:47 +0300 Subject: [PATCH] [PLUGIN API] Do postprocess after symbol resolve --- .../backend/common/extensions/IrGenerationExtension.kt | 9 +++++---- .../src/org/jetbrains/kotlin/ir/util/SymbolTable.kt | 1 + .../backend/common/serialization/KotlinIrLinker.kt | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt index 50785bc6d9e..9952d8ebe02 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.scopes.MemberScope +// TODO: Make IrPluginContext be interface open class IrPluginContext( @Deprecated("FrontEnd API shouldn't be accessed in Ir plugin environment") val moduleDescriptor: ModuleDescriptor, @@ -58,8 +59,8 @@ open class IrPluginContext( if (symbol.isBound) return symbol linker.getDeclaration(symbol) - // TODO: post process -// linker. + linker.postProcess() + return symbol } @@ -70,8 +71,8 @@ open class IrPluginContext( symbols.forEach { if (!it.isBound) linker.getDeclaration(it) } - // TODO: post process -// linker. + linker.postProcess() + return symbols } 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 83a4d49d3aa..920c99f4242 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 @@ -49,6 +49,7 @@ interface LazyIrProvider : IrProvider { interface IrDeserializer : IrProvider { fun init(moduleFragment: IrModuleFragment?) {} + fun postProcess() {} } interface ReferenceSymbolTable { diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index 6243c186d7d..709f02d8d7c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -537,7 +537,7 @@ abstract class KotlinIrLinker( deserializersForModules.values.forEach { it.init() } } - fun postProcess() { + override fun postProcess() { deserializersForModules.values.forEach { it.postProcess() } finalizeExpectActualLinker() }