Add ir generation plugins to JS and JVM BE

This commit is contained in:
Leonid Startsev
2018-07-20 13:23:08 +03:00
parent 5d669ff671
commit 87da6e2226
2 changed files with 11 additions and 1 deletions
@@ -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)
@@ -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) {