rad
10/04/2024, 3:16 PMOliver.O
10/04/2024, 3:50 PMIrGenerationExtension
and know how to invoke it. In that case, you can use the dump()
function like so:
import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.util.dump
class CompilerPluginIrGenerationExtension(private val compilerConfiguration: CompilerConfiguration) :
IrGenerationExtension {
override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) {
moduleFragment.transform(
ModuleTransformer(
compilerConfiguration.get(CommonConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE)
),
null
)
}
}
private class ModuleTransformer(private val messageCollector: MessageCollector) :
IrElementTransformerVoidWithContext() {
override fun visitFileNew(declaration: IrFile): IrFile {
val result = super.visitFileNew(declaration)
messageCollector.report(CompilerMessageSeverity.WARNING, declaration.dump())
return result
}
}
rad
10/04/2024, 4:01 PMJavier
10/04/2024, 6:35 PMrad
10/04/2024, 6:39 PMIvan Kylchik
10/07/2024, 10:59 AM-Xprint-ir
compiler argument, but only for Kotlin/Native. It will print how IR is looking on all different compilation stages.Oliver.O
10/07/2024, 11:03 AMJavier
10/07/2024, 11:04 AMOliver.O
10/07/2024, 11:05 AMJavier
10/07/2024, 11:05 AMJavier
10/07/2024, 11:07 AM./gradlew assemble
will crash with that error on CLI.Javier
10/07/2024, 11:08 AMOliver.O
10/07/2024, 11:08 AMJavier
10/07/2024, 11:09 AM