From e77b4443b47136d27942e58326a8c93a23431ccf Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 21 Oct 2013 19:04:25 +0400 Subject: [PATCH] Ignore all output directories in a chunk Otherwise the class files generated by previous builds for one of the targets in the chunk would interfere with source definitions, and we get overload resolution ambiguities and such Original commit: aacf133ef6cd33e6c961336f5c43300cfa5b6f8c --- .../build/KotlinBuilderModuleScriptGenerator.java | 12 +++++++----- .../jet/jps/build/KotlinJpsBuildTestCase.java | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java index f2195085954..f105f36047c 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java @@ -41,9 +41,7 @@ import org.jetbrains.jps.model.module.JpsSdkDependency; import java.io.File; import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.List; +import java.util.*; import static org.jetbrains.jet.compiler.runner.KotlinModuleDescriptionBuilder.DependencyProcessor; import static org.jetbrains.jet.compiler.runner.KotlinModuleDescriptionBuilder.DependencyProvider; @@ -61,6 +59,10 @@ public class KotlinBuilderModuleScriptGenerator { boolean noSources = true; + Set outputDirs = new HashSet(); + for (ModuleBuildTarget target : chunk.getTargets()) { + outputDirs.add(getOutputDir(target)); + } for (ModuleBuildTarget target : chunk.getTargets()) { File outputDir = getOutputDir(target); @@ -73,8 +75,8 @@ public class KotlinBuilderModuleScriptGenerator { getKotlinModuleDependencies(context, target), sourceFiles, target.isTests(), - // this excludes the output directory from the class path, to be removed for true incremental compilation - Collections.singleton(outputDir) + // this excludes the output directories from the class path, to be removed for true incremental compilation + outputDirs ); } diff --git a/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTestCase.java b/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTestCase.java index ac6b16c4fde..1108dab9584 100644 --- a/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTestCase.java +++ b/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTestCase.java @@ -169,7 +169,7 @@ public class KotlinJpsBuildTestCase extends AbstractKotlinJpsBuildTestCase { private void assertOutputDeleted(String sourceFileName, String packageClassFqName, String moduleName) { File file = new File(workDir, sourceFileName); change(file.getAbsolutePath()); - makeAll(); + makeAll().assertSuccessful(); String outputDirPrefix = "out/production/" + moduleName + "/"; assertDeleted(outputDirPrefix + packageClassFqName.replace('.', '/') + ".class",