diff --git a/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiComponentRegistrar.kt b/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiComponentRegistrar.kt index 5124fb214d9..9939d57f636 100644 --- a/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiComponentRegistrar.kt +++ b/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiComponentRegistrar.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.jvm.abi import com.intellij.mock.MockProject +import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys +import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension import org.jetbrains.kotlin.codegen.extensions.ClassFileFactoryFinalizerExtension import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar @@ -30,7 +32,8 @@ class JvmAbiComponentRegistrar : ComponentRegistrar { // Use the single-pass implementation, using the new ABI flag in the metadata. configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) val builderExtension = JvmAbiClassBuilderInterceptor() - val outputExtension = JvmAbiOutputExtension(File(outputPath), builderExtension.abiClassInfo) + val messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE) + val outputExtension = JvmAbiOutputExtension(File(outputPath), builderExtension.abiClassInfo, messageCollector) ClassBuilderInterceptorExtension.registerExtension(project, builderExtension) ClassFileFactoryFinalizerExtension.registerExtension(project, outputExtension) } diff --git a/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiOutputExtension.kt b/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiOutputExtension.kt index a6cb4e75829..1b473ca40b3 100644 --- a/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiOutputExtension.kt +++ b/plugins/jvm-abi-gen/src/org/jetbrains/kotlin/jvm/abi/JvmAbiOutputExtension.kt @@ -16,12 +16,15 @@ import org.jetbrains.kotlin.codegen.extensions.ClassFileFactoryFinalizerExtensio import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.org.objectweb.asm.* import org.jetbrains.org.objectweb.asm.commons.Method -import org.jetbrains.org.objectweb.asm.tree.* +import org.jetbrains.org.objectweb.asm.tree.AnnotationNode +import org.jetbrains.org.objectweb.asm.tree.FieldNode +import org.jetbrains.org.objectweb.asm.tree.ParameterNode import java.io.File class JvmAbiOutputExtension( private val outputPath: File, private val abiClassInfos: Map, + private val messageCollector: MessageCollector, ) : ClassFileFactoryFinalizerExtension { override fun finalizeClassFactory(factory: ClassFileFactory) { // We need to wait until the end to produce any output in order to strip classes @@ -29,7 +32,15 @@ class JvmAbiOutputExtension( val outputFiles = AbiOutputFiles(abiClassInfos, factory) if (outputPath.extension == "jar") { // We don't include the runtime or main class in interface jars and always reset time stamps. - CompileEnvironmentUtil.writeToJar(outputPath, false, true, true, null, outputFiles, MessageCollector.NONE) + CompileEnvironmentUtil.writeToJar( + outputPath, + false, + true, + true, + null, + outputFiles, + messageCollector + ) } else { outputFiles.writeAllTo(outputPath) }