diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/GroupedKtSources.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/GroupedKtSources.kt index 6d5028ec7ba..2c02305204c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/GroupedKtSources.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/GroupedKtSources.kt @@ -26,7 +26,9 @@ data class GroupedKtSources( val platformSources: Collection, val commonSources: Collection, val sourcesByModuleName: Map>, -) +) { + fun isEmpty(): Boolean = platformSources.isEmpty() && commonSources.isEmpty() +} fun collectSources( compilerConfiguration: CompilerConfiguration, diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index fc659ef0a9a..81c58eaceb9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -142,13 +142,15 @@ class K2JVMCompiler : CLICompiler() { val targetDescription = chunk.map { input -> input.getModuleName() + "-" + input.getModuleType() }.let { names -> names.singleOrNull() ?: names.joinToString() } - if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR) && configuration.getBoolean(CommonConfigurationKeys.USE_LIGHT_TREE)) { + if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR) && configuration.getBoolean(CommonConfigurationKeys.USE_LIGHT_TREE)) { + if (messageCollector.hasErrors()) return COMPILATION_ERROR val projectEnvironment = createProjectEnvironment(configuration, rootDisposable, EnvironmentConfigFiles.JVM_CONFIG_FILES, messageCollector) if (messageCollector.hasErrors()) return COMPILATION_ERROR compileModulesUsingFrontendIrAndLightTree( - projectEnvironment, configuration, messageCollector, buildFile, chunk, targetDescription + projectEnvironment, configuration, messageCollector, buildFile, chunk, targetDescription, + checkSourceFiles = !arguments.allowNoSourceFiles && !arguments.version ) } else { val environment = createCoreEnvironment( diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt index ed619d9b50d..0ee93fcdfea 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/pipeline/compilerPipeline.kt @@ -79,7 +79,8 @@ fun compileModulesUsingFrontendIrAndLightTree( messageCollector: MessageCollector, buildFile: File?, chunk: List, - targetDescription: String + targetDescription: String, + checkSourceFiles: Boolean ): Boolean { require(projectEnvironment is VfsBasedProjectEnvironment) // TODO: abstract away this requirement ProgressIndicatorAndCompilationCanceledStatus.checkCanceled() @@ -99,6 +100,14 @@ fun compileModulesUsingFrontendIrAndLightTree( put(JVMConfigurationKeys.FRIEND_PATHS, module.getFriendPaths()) } val groupedSources = collectSources(compilerConfiguration, projectEnvironment, messageCollector) + if (messageCollector.hasErrors()) { + return false + } + + if (checkSourceFiles && groupedSources.isEmpty() && buildFile == null) { + messageCollector.report(CompilerMessageSeverity.ERROR, "No source files") + return false + } val compilerInput = ModuleCompilerInput( TargetId(module),