From a401374ed4d69fce2432057707de8ed4ed7546e0 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Tue, 2 Jun 2020 14:08:43 +0300 Subject: [PATCH] [PLUGIN API] Add extension point to customize linkage process --- .../backend/common/extensions/IrGenerationExtension.kt | 3 ++- .../src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 b99739b7f63..a95b2d93f8c 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 @@ -7,8 +7,9 @@ package org.jetbrains.kotlin.backend.common.extensions import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.linkage.IrDeserializer -interface IrGenerationExtension { +interface IrGenerationExtension : IrDeserializer.IrLinkerExtension { companion object : ProjectExtensionDescriptor( "org.jetbrains.kotlin.irGenerationExtension", IrGenerationExtension::class.java diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt index 5c3e236d374..1612eb9292a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt @@ -5,10 +5,16 @@ package org.jetbrains.kotlin.ir.linkage +import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.symbols.IrSymbol interface IrDeserializer : IrProvider { + interface IrLinkerExtension { + fun resolveSymbol(symbol: IrSymbol): IrDeclaration? = null + } + fun init(moduleFragment: IrModuleFragment?) {} fun postProcess() {} }