From dd1dc67cfbd3f80eadd60e8b83f04257198003f1 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 18 Oct 2013 12:22:50 +0400 Subject: [PATCH] Do not fail on bad Kotlin configuration if there are no Kotlin files Original commit: 61270e8ee569cd691ed1e3eaf1770c44b107f6a3 --- .../jet/jps/build/KotlinBuilder.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java index 5c47f983ee1..d72e18d2df0 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java @@ -27,7 +27,10 @@ import org.jetbrains.jet.cli.common.arguments.K2JVMCompilerArguments; import org.jetbrains.jet.cli.common.messages.CompilerMessageLocation; import org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity; import org.jetbrains.jet.cli.common.messages.MessageCollector; -import org.jetbrains.jet.compiler.runner.*; +import org.jetbrains.jet.compiler.runner.CompilerEnvironment; +import org.jetbrains.jet.compiler.runner.CompilerRunnerConstants; +import org.jetbrains.jet.compiler.runner.OutputItemsCollectorImpl; +import org.jetbrains.jet.compiler.runner.SimpleOutputItem; import org.jetbrains.jet.jps.JpsKotlinCompilerSettings; import org.jetbrains.jet.utils.PathUtil; import org.jetbrains.jps.ModuleChunk; @@ -49,10 +52,7 @@ import java.util.Collections; import java.util.List; import java.util.Set; -import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.EXCEPTION; -import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.INFO; -import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.WARNING; - +import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.*; import static org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runK2JsCompiler; import static org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runK2JvmCompiler; @@ -105,6 +105,10 @@ public class KotlinBuilder extends ModuleLevelBuilder { CompilerEnvironment environment = CompilerEnvironment.getEnvironmentFor(PathUtil.getKotlinPathsForJpsPluginOrJpsTests(), outputDir); if (!environment.success()) { + if (!hasKotlinFiles(chunk)) { + // Configuration is bad, but there's nothing to compile anyways + return ExitCode.NOTHING_DONE; + } environment.reportErrorsTo(messageCollector); return ExitCode.ABORT; } @@ -171,6 +175,18 @@ public class KotlinBuilder extends ModuleLevelBuilder { return ExitCode.OK; } + private static boolean hasKotlinFiles(@NotNull ModuleChunk chunk) { + boolean hasKotlinFiles = false; + for (ModuleBuildTarget target : chunk.getTargets()) { + List sourceFiles = KotlinSourceFileCollector.getAllKotlinSourceFiles(target); + if (!sourceFiles.isEmpty()) { + hasKotlinFiles = true; + break; + } + } + return hasKotlinFiles; + } + private static boolean isJavaPluginEnabled(@NotNull CompileContext context) { try { // Using reflection for backward compatibility with IDEA 12