Add ir generation plugins to JS and JVM BE
This commit is contained in:
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.backend.js
|
|||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
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.lower.*
|
||||||
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
|
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
@@ -60,6 +61,11 @@ fun compile(
|
|||||||
ExternalDependenciesGenerator(psi2IrContext.moduleDescriptor, psi2IrContext.symbolTable, psi2IrContext.irBuiltIns)
|
ExternalDependenciesGenerator(psi2IrContext.moduleDescriptor, psi2IrContext.symbolTable, psi2IrContext.irBuiltIns)
|
||||||
.generateUnboundSymbolsAsDependencies(moduleFragment)
|
.generateUnboundSymbolsAsDependencies(moduleFragment)
|
||||||
|
|
||||||
|
val extensions = IrGenerationExtension.getInstances(project)
|
||||||
|
extensions.forEach { extension ->
|
||||||
|
moduleFragment.files.forEach { irFile -> extension.generate(irFile, context, psi2IrContext.bindingContext) }
|
||||||
|
}
|
||||||
|
|
||||||
MoveExternalDeclarationsToSeparatePlace().lower(moduleFragment.files)
|
MoveExternalDeclarationsToSeparatePlace().lower(moduleFragment.files)
|
||||||
|
|
||||||
context.performInlining(moduleFragment)
|
context.performInlining(moduleFragment)
|
||||||
|
|||||||
@@ -16,16 +16,20 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm
|
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.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.util.render
|
import org.jetbrains.kotlin.ir.util.render
|
||||||
import java.lang.AssertionError
|
import java.lang.AssertionError
|
||||||
|
|
||||||
class JvmBackend(context: JvmBackendContext) {
|
class JvmBackend(val context: JvmBackendContext) {
|
||||||
private val lower = JvmLower(context)
|
private val lower = JvmLower(context)
|
||||||
private val codegen = JvmCodegen(context)
|
private val codegen = JvmCodegen(context)
|
||||||
|
|
||||||
fun generateFile(irFile: IrFile) {
|
fun generateFile(irFile: IrFile) {
|
||||||
|
val extensions = IrGenerationExtension.getInstances(context.state.project)
|
||||||
|
extensions.forEach { it.generate(irFile, context, context.state.bindingContext) }
|
||||||
|
|
||||||
lower.lower(irFile)
|
lower.lower(irFile)
|
||||||
|
|
||||||
for (loweredClass in irFile.declarations) {
|
for (loweredClass in irFile.declarations) {
|
||||||
|
|||||||
Reference in New Issue
Block a user