diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.java b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.java index c58dcf09757..288d5c37d1a 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.java +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.java @@ -84,6 +84,9 @@ public abstract class CommonCompilerArguments implements Serializable { @Argument(value = "-Xallow-kotlin-package", description = "Allow compiling code in package 'kotlin'") public boolean allowKotlinPackage; + @Argument(value = "-Xreport-output-files", description = "Report source to output files mapping") + public boolean reportOutputFiles; + @Argument(value = "-Xplugin", valueDescription = "", description = "Load plugins from the given classpath") public String[] pluginClasspaths; diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/CompilerMessageSeverity.java b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/CompilerMessageSeverity.java index e939b34a8a6..c4e10b5ef70 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/CompilerMessageSeverity.java +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/CompilerMessageSeverity.java @@ -32,7 +32,7 @@ public enum CompilerMessageSeverity { OUTPUT; public static final EnumSet ERRORS = EnumSet.of(ERROR, EXCEPTION); - public static final EnumSet VERBOSE = EnumSet.of(OUTPUT, LOGGING); + public static final EnumSet VERBOSE = EnumSet.of(LOGGING); public boolean isError() { return ERRORS.contains(this); diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java index 6c19deaf7a4..c6ca0bc27c0 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java @@ -220,6 +220,9 @@ public abstract class CLICompiler { if (arguments.intellijPluginRoot != null) { configuration.put(CLIConfigurationKeys.INTELLIJ_PLUGIN_ROOT, arguments.intellijPluginRoot); } + if (arguments.reportOutputFiles) { + configuration.put(CommonConfigurationKeys.REPORT_OUTPUT_FILES, true); + } @SuppressWarnings("deprecation") CompilerJarLocator locator = services.get(CompilerJarLocator.class); if (locator != null) { diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/output/outputUtils.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/output/outputUtils.kt index d92cd016e31..15681f2c930 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/output/outputUtils.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/output/outputUtils.kt @@ -24,23 +24,22 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil import java.io.File -fun OutputFileCollection.writeAll(outputDir: File, report: (file: OutputFile, sources: List, output: File) -> Unit) { +fun OutputFileCollection.writeAll(outputDir: File, report: ((file: OutputFile, sources: List, output: File) -> Unit)?) { for (file in asList()) { val sources = file.sourceFiles val output = File(outputDir, file.relativePath) - report(file, sources, output) + report?.invoke(file, sources, output) FileUtil.writeToFile(output, file.asByteArray()) } } -private val REPORT_NOTHING: (OutputFile, List, File) -> Unit = { _, _, _ -> } - fun OutputFileCollection.writeAllTo(outputDir: File) { - writeAll(outputDir, REPORT_NOTHING) + writeAll(outputDir, null) } -fun OutputFileCollection.writeAll(outputDir: File, messageCollector: MessageCollector) { - writeAll(outputDir) { _, sources, output -> +fun OutputFileCollection.writeAll(outputDir: File, messageCollector: MessageCollector, reportOutputFiles: Boolean) { + if (!reportOutputFiles) writeAllTo(outputDir) + else writeAll(outputDir) { _, sources, output -> messageCollector.report(CompilerMessageSeverity.OUTPUT, OutputMessageUtil.formatOutputMessage(sources, output)) } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java index 6b3122b77bf..ba208e91a2d 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java @@ -211,7 +211,8 @@ public class K2JSCompiler extends CLICompiler { ProgressIndicatorAndCompilationCanceledStatus.checkCanceled(); - OutputUtilsKt.writeAll(outputFiles, outputDir, messageCollector); + OutputUtilsKt.writeAll(outputFiles, outputDir, messageCollector, + configuration.getBoolean(CommonConfigurationKeys.REPORT_OUTPUT_FILES)); return OK; } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 32236e75146..9f3f4899eb9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -46,6 +46,7 @@ import org.jetbrains.kotlin.codegen.GeneratedClassLoader import org.jetbrains.kotlin.codegen.KotlinCodegenFacade import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.codegen.state.GenerationStateEventCallback +import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.addKotlinSourceRoots @@ -87,19 +88,21 @@ object KotlinToJVMBytecodeCompiler { outputFiles: OutputFileCollection, mainClass: FqName? ) { + val reportOutputFiles = configuration.getBoolean(CommonConfigurationKeys.REPORT_OUTPUT_FILES) val jarPath = configuration.get(JVMConfigurationKeys.OUTPUT_JAR) val messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE) if (jarPath != null) { val includeRuntime = configuration.get(JVMConfigurationKeys.INCLUDE_RUNTIME, false) CompileEnvironmentUtil.writeToJar(jarPath, includeRuntime, mainClass, outputFiles) - messageCollector.report( - OUTPUT, OutputMessageUtil.formatOutputMessage(outputFiles.asList().flatMap { it.sourceFiles }.distinct(), jarPath) - ) + if (reportOutputFiles) { + val message = OutputMessageUtil.formatOutputMessage(outputFiles.asList().flatMap { it.sourceFiles }.distinct(), jarPath) + messageCollector.report(OUTPUT, message) + } return } val outputDir = configuration.get(JVMConfigurationKeys.OUTPUT_DIRECTORY) ?: File(".") - outputFiles.writeAll(outputDir, messageCollector) + outputFiles.writeAll(outputDir, messageCollector, reportOutputFiles) } private fun createOutputFilesFlushingCallbackIfPossible(configuration: CompilerConfiguration): GenerationStateEventCallback { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt b/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt index 7c2d36a2fb7..a4d50eeb9ed 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt @@ -25,6 +25,9 @@ object CommonConfigurationKeys { @JvmField val MODULE_NAME = CompilerConfigurationKey("module name") + + @JvmField + val REPORT_OUTPUT_FILES = CompilerConfigurationKey("report output files") } var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt index 25dbda717a8..f8ebae18756 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt @@ -424,6 +424,7 @@ class IncrementalJvmCompilerRunner( val destination = args.destination args.destination = null args.module = moduleFile.absolutePath + args.reportOutputFiles = true val outputItemCollector = OutputItemsCollectorImpl() @Suppress("NAME_SHADOWING") val messageCollector = MessageCollectorWrapper(messageCollector, outputItemCollector) diff --git a/compiler/testData/cli/js/jsExtraHelp.out b/compiler/testData/cli/js/jsExtraHelp.out index 37f76e9b876..64e422cd8f6 100644 --- a/compiler/testData/cli/js/jsExtraHelp.out +++ b/compiler/testData/cli/js/jsExtraHelp.out @@ -5,6 +5,7 @@ where advanced options include: -Xrepeat= Repeat compilation (for performance analysis) -Xskip-metadata-version-check Load classes with bad metadata version anyway (incl. pre-release classes) -Xallow-kotlin-package Allow compiling code in package 'kotlin' + -Xreport-output-files Report source to output files mapping -Xplugin= Load plugins from the given classpath -Xmulti-platform Enable experimental language support for multi-platform projects -Xno-check-impl Do not check presence of 'impl' modifier in multi-platform projects diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index 4a4ecfbe2e5..622f8bc9b50 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -18,6 +18,7 @@ where advanced options include: -Xrepeat= Repeat compilation (for performance analysis) -Xskip-metadata-version-check Load classes with bad metadata version anyway (incl. pre-release classes) -Xallow-kotlin-package Allow compiling code in package 'kotlin' + -Xreport-output-files Report source to output files mapping -Xplugin= Load plugins from the given classpath -Xmulti-platform Enable experimental language support for multi-platform projects -Xno-check-impl Do not check presence of 'impl' modifier in multi-platform projects diff --git a/compiler/testData/integration/ant/js/verbose/build.log.expected b/compiler/testData/integration/ant/js/verbose/build.log.expected index 5d7a9f26a55..755e21e2f9a 100644 --- a/compiler/testData/integration/ant/js/verbose/build.log.expected +++ b/compiler/testData/integration/ant/js/verbose/build.log.expected @@ -4,10 +4,6 @@ Buildfile: [TestData]/build.xml build: [kotlin2js] Compiling [[TestData]/root1] => [[Temp]/out.js] [kotlin2js] logging: compiling source files: [TestData]/root1/foo.kt -[kotlin2js] output: output: -[kotlin2js] [Temp]/out.js -[kotlin2js] Sources: -[kotlin2js] [TestData]/root1/foo.kt BUILD SUCCESSFUL Total time: [time] diff --git a/compiler/testData/integration/ant/jvm/verbose/build.log.expected b/compiler/testData/integration/ant/jvm/verbose/build.log.expected index 48bc49e55d8..e145f644e2e 100644 --- a/compiler/testData/integration/ant/jvm/verbose/build.log.expected +++ b/compiler/testData/integration/ant/jvm/verbose/build.log.expected @@ -5,10 +5,6 @@ build: [kotlinc] Compiling [[TestData]/hello.kt] => [[Temp]/hello.jar] [kotlinc] logging: using Kotlin home directory [KotlinProjectHome]/dist/kotlinc [kotlinc] logging: configuring the compilation environment - [kotlinc] output: output: - [kotlinc] [Temp]/hello.jar - [kotlinc] Sources: - [kotlinc] [TestData]/hello.kt BUILD SUCCESSFUL Total time: [time] diff --git a/compiler/tests/org/jetbrains/kotlin/daemon/CompilerApiTest.kt b/compiler/tests/org/jetbrains/kotlin/daemon/CompilerApiTest.kt index 7b20063daf7..b6743ae56d7 100644 --- a/compiler/tests/org/jetbrains/kotlin/daemon/CompilerApiTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/daemon/CompilerApiTest.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.daemon.common.* import org.jetbrains.kotlin.integration.KotlinIntegrationTestBase import org.jetbrains.kotlin.scripts.captureOut import org.jetbrains.kotlin.test.KotlinTestUtils -import org.jetbrains.kotlin.utils.keysToMap import org.junit.Assert import java.io.File import java.net.URLClassLoader @@ -110,7 +109,8 @@ class CompilerApiTest : KotlinIntegrationTestBase() { fun testHelloAppLocal() { val messageCollector = TestMessageCollector() val jar = tmpdir.absolutePath + File.separator + "hello.jar" - val (code, outputs) = compileLocally(messageCollector, "-include-runtime", File(getHelloAppBaseDir(), "hello.kt").absolutePath, "-d", jar) + val (code, outputs) = compileLocally(messageCollector, "-include-runtime", File(getHelloAppBaseDir(), "hello.kt").absolutePath, + "-d", jar, "-Xreport-output-files") Assert.assertEquals(0, code) Assert.assertTrue(outputs.isNotEmpty()) Assert.assertEquals(jar, outputs.first().outputFile?.absolutePath) @@ -129,12 +129,13 @@ class CompilerApiTest : KotlinIntegrationTestBase() { val daemonJVMOptions = configureDaemonJVMOptions("D$COMPILE_DAEMON_LOG_PATH_PROPERTY=\"${logFile.loggerCompatiblePath}\"", inheritMemoryLimits = false, inheritAdditionalProperties = false) - val messageCollector = TestMessageCollector() val jar = tmpdir.absolutePath + File.separator + "hello.jar" try { - val (code, outputs) = compileOnDaemon(flagFile, compilerId, daemonJVMOptions, daemonOptions, messageCollector, - "-include-runtime", File(getHelloAppBaseDir(), "hello.kt").absolutePath, "-d", jar) + val (code, outputs) = compileOnDaemon( + flagFile, compilerId, daemonJVMOptions, daemonOptions, TestMessageCollector(), "-include-runtime", + File(getHelloAppBaseDir(), "hello.kt").absolutePath, "-d", jar, "-Xreport-output-files" + ) Assert.assertEquals(0, code) Assert.assertTrue(outputs.isNotEmpty()) Assert.assertEquals(jar, outputs.first().outputFile?.absolutePath) @@ -149,7 +150,8 @@ class CompilerApiTest : KotlinIntegrationTestBase() { fun testSimpleScriptLocal() { val messageCollector = TestMessageCollector() - val (code, outputs) = compileLocally(messageCollector, File(getSimpleScriptBaseDir(), "script.kts").absolutePath, "-d", tmpdir.absolutePath) + val (code, outputs) = compileLocally(messageCollector, File(getSimpleScriptBaseDir(), "script.kts").absolutePath, + "-d", tmpdir.absolutePath, "-Xreport-output-files") Assert.assertEquals(0, code) Assert.assertTrue(outputs.isNotEmpty()) Assert.assertEquals(File(tmpdir, "Script.class").absolutePath, outputs.first().outputFile?.absolutePath) @@ -168,12 +170,11 @@ class CompilerApiTest : KotlinIntegrationTestBase() { val daemonJVMOptions = configureDaemonJVMOptions("D$COMPILE_DAEMON_LOG_PATH_PROPERTY=\"${logFile.loggerCompatiblePath}\"", inheritMemoryLimits = false, inheritAdditionalProperties = false) - val messageCollector = TestMessageCollector() - val jar = tmpdir.absolutePath + File.separator + "hello.jar" - try { - val (code, outputs) = compileOnDaemon(flagFile, compilerId, daemonJVMOptions, daemonOptions, messageCollector, - File(getSimpleScriptBaseDir(), "script.kts").absolutePath, "-d", tmpdir.absolutePath) + val (code, outputs) = compileOnDaemon( + flagFile, compilerId, daemonJVMOptions, daemonOptions, TestMessageCollector(), + File(getSimpleScriptBaseDir(), "script.kts").absolutePath, "-Xreport-output-files", "-d", tmpdir.absolutePath + ) Assert.assertEquals(0, code) Assert.assertTrue(outputs.isNotEmpty()) Assert.assertEquals(File(tmpdir, "Script.class").absolutePath, outputs.first().outputFile?.absolutePath) diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 040562f2c38..7a58d5feaaa 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -247,8 +247,9 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { return ABORT } - val commonArguments = compilerArgumentsForChunk(chunk) - commonArguments.verbose = true // Make compiler report source to output files mapping + val commonArguments = compilerArgumentsForChunk(chunk).apply { + reportOutputFiles = true + } val allCompiledFiles = getAllCompiledFilesContainer(context) val filesToCompile = KotlinSourceFileCollector.getDirtySourceFiles(dirtyFilesHolder) diff --git a/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/AnnotationCollectorPlugin.kt b/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/AnnotationCollectorPlugin.kt index 1936708f281..c490a37ec4e 100644 --- a/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/AnnotationCollectorPlugin.kt +++ b/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/AnnotationCollectorPlugin.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.compiler.plugin.CliOption import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar +import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfigurationKey import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension @@ -89,10 +90,10 @@ class AnnotationCollectorComponentRegistrar : ComponentRegistrar { } val stubs = configuration.get(AnnotationCollectorConfigurationKeys.STUBS_PATH) - val messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE) if (stubs != null) { - AnalysisHandlerExtension.registerExtension(project, StubProducerExtension(File(stubs), messageCollector)) + val messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE) + val reportOutputFiles = configuration.getBoolean(CommonConfigurationKeys.REPORT_OUTPUT_FILES) + AnalysisHandlerExtension.registerExtension(project, StubProducerExtension(File(stubs), messageCollector, reportOutputFiles)) } } } - diff --git a/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/StubProducerExtension.kt b/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/StubProducerExtension.kt index 52cd7922c2e..34efaf114f1 100644 --- a/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/StubProducerExtension.kt +++ b/plugins/annotation-collector/src/org/jetbrains/kotlin/annotation/StubProducerExtension.kt @@ -32,7 +32,11 @@ import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension import org.jetbrains.org.objectweb.asm.ClassWriter import java.io.File -class StubProducerExtension(val stubsOutputDir: File, val messageCollector: MessageCollector) : AnalysisHandlerExtension { +class StubProducerExtension( + private val stubsOutputDir: File, + private val messageCollector: MessageCollector, + private val reportOutputFiles: Boolean +) : AnalysisHandlerExtension { override fun analysisCompleted( project: Project, module: ModuleDescriptor, @@ -50,7 +54,7 @@ class StubProducerExtension(val stubsOutputDir: File, val messageCollector: Mess KotlinCodegenFacade.compileCorrectFiles(generationState, CompilationErrorHandler.THROW_EXCEPTION) if (!stubsOutputDir.exists()) stubsOutputDir.mkdirs() - generationState.factory.writeAll(stubsOutputDir, messageCollector) + generationState.factory.writeAll(stubsOutputDir, messageCollector, reportOutputFiles) generationState.destroy() return AnalysisResult.success(BindingContext.EMPTY, module, shouldGenerateCode = false) diff --git a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt index fd225a7e2c0..74801abc6e3 100644 --- a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt +++ b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt @@ -19,13 +19,15 @@ package org.jetbrains.kotlin.kapt3 import com.intellij.openapi.project.Project import com.sun.tools.javac.tree.JCTree import org.jetbrains.kotlin.analyzer.AnalysisResult -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity +import org.jetbrains.kotlin.backend.common.output.OutputFile +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil import org.jetbrains.kotlin.cli.common.output.outputUtils.writeAll import org.jetbrains.kotlin.codegen.CompilationErrorHandler import org.jetbrains.kotlin.codegen.KotlinCodegenFacade import org.jetbrains.kotlin.codegen.state.GenerationState +import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.kapt3.diagnostic.ErrorsKapt3 @@ -250,17 +252,21 @@ abstract class AbstractKapt3Extension( converter: ClassFileToSourceStubConverter) { val incrementalDataOutputDir = this.incrementalDataOutputDir ?: return - generationState.factory.writeAll(incrementalDataOutputDir) { file, sources, output -> - val stubFileObject = converter.bindings[file.relativePath.substringBeforeLast(".class", missingDelimiterValue = "")] - if (stubFileObject != null) { - val stubFile = File(stubsOutputDir, stubFileObject.name) - if (stubFile.exists()) { - messageCollector.report(CompilerMessageSeverity.OUTPUT, OutputMessageUtil.formatOutputMessage(sources, stubFile)) - } - } + val reportOutputFiles = generationState.configuration.getBoolean(CommonConfigurationKeys.REPORT_OUTPUT_FILES) + generationState.factory.writeAll( + incrementalDataOutputDir, + if (!reportOutputFiles) null else fun(file: OutputFile, sources: List, output: File) { + val stubFileObject = converter.bindings[file.relativePath.substringBeforeLast(".class", missingDelimiterValue = "")] + if (stubFileObject != null) { + val stubFile = File(stubsOutputDir, stubFileObject.name) + if (stubFile.exists()) { + messageCollector.report(OUTPUT, OutputMessageUtil.formatOutputMessage(sources, stubFile)) + } + } - messageCollector.report(CompilerMessageSeverity.OUTPUT, OutputMessageUtil.formatOutputMessage(sources, output)) - } + messageCollector.report(OUTPUT, OutputMessageUtil.formatOutputMessage(sources, output)) + } + ) } protected abstract fun loadProcessors(): List diff --git a/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/AbstractAnnotationProcessorBoxTest.kt b/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/AbstractAnnotationProcessorBoxTest.kt index 856ebb6a6fb..c1c4feb939c 100644 --- a/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/AbstractAnnotationProcessorBoxTest.kt +++ b/plugins/plugins-tests/tests/org/jetbrains/kotlin/annotation/AbstractAnnotationProcessorBoxTest.kt @@ -62,7 +62,7 @@ abstract class AbstractAnnotationProcessorBoxTest : KotlinTestWithEnvironment() if (supportStubs) { val stubsDir = KotlinTestUtils.tmpDir("class-stubs") - val stubProducerExtension = StubProducerExtension(stubsDir, MessageCollector.NONE) + val stubProducerExtension = StubProducerExtension(stubsDir, MessageCollector.NONE, false) AnalysisHandlerExtension.registerExtension(project, stubProducerExtension) } diff --git a/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt b/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt index 1368dbfde70..2ccaeec82da 100644 --- a/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt +++ b/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt @@ -208,7 +208,8 @@ class SourceSectionsTest : TestCaseWithTmpdir() { sourceToOutput.forEach { (source, expectedOutput) -> val args = arrayOf(source.canonicalPath, "-d", tmpdir.canonicalPath, "-Xplugin=${sourceSectionsPluginJar.canonicalPath}", - "-P", TEST_ALLOWED_SECTIONS.joinToString(",") { "plugin:${SourceSectionsCommandLineProcessor.PLUGIN_ID}:${SourceSectionsCommandLineProcessor.SECTIONS_OPTION.name}=$it" }) + "-P", TEST_ALLOWED_SECTIONS.joinToString(",") { "plugin:${SourceSectionsCommandLineProcessor.PLUGIN_ID}:${SourceSectionsCommandLineProcessor.SECTIONS_OPTION.name}=$it" }, + "-Xreport-output-files") messageCollector.clear() val outputs = arrayListOf()