Do not fail on bad Kotlin configuration if there are no Kotlin files

Original commit: 61270e8ee5
This commit is contained in:
Andrey Breslav
2013-10-18 12:22:50 +04:00
parent 4e5b04ce1f
commit dd1dc67cfb
@@ -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<File> 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