From 87da6e2226ca522c70f546e6754d38e85d98b179 Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Fri, 20 Jul 2018 13:23:08 +0300 Subject: [PATCH] Add ir generation plugins to JS and JVM BE --- .../src/org/jetbrains/kotlin/ir/backend/js/compiler.kt | 6 ++++++ .../src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt index 0e487e7cdbe..27136c40dba 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.backend.js import com.intellij.openapi.project.Project import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.lower.* import org.jetbrains.kotlin.backend.common.runOnFilePostfix import org.jetbrains.kotlin.config.CompilerConfiguration @@ -60,6 +61,11 @@ fun compile( ExternalDependenciesGenerator(psi2IrContext.moduleDescriptor, psi2IrContext.symbolTable, psi2IrContext.irBuiltIns) .generateUnboundSymbolsAsDependencies(moduleFragment) + val extensions = IrGenerationExtension.getInstances(project) + extensions.forEach { extension -> + moduleFragment.files.forEach { irFile -> extension.generate(irFile, context, psi2IrContext.bindingContext) } + } + MoveExternalDeclarationsToSeparatePlace().lower(moduleFragment.files) context.performInlining(moduleFragment) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt index 986ab0ed39c..5ad7f418f63 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt @@ -16,16 +16,20 @@ package org.jetbrains.kotlin.backend.jvm +import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.util.render import java.lang.AssertionError -class JvmBackend(context: JvmBackendContext) { +class JvmBackend(val context: JvmBackendContext) { private val lower = JvmLower(context) private val codegen = JvmCodegen(context) fun generateFile(irFile: IrFile) { + val extensions = IrGenerationExtension.getInstances(context.state.project) + extensions.forEach { it.generate(irFile, context, context.state.bindingContext) } + lower.lower(irFile) for (loweredClass in irFile.declarations) {