Added incremental compilation flag. For publishing intermediate implementation.

Original commit: a502374a62
This commit is contained in:
Evgeny Gerashchenko
2014-03-11 23:56:50 +04:00
parent 06cb6eb030
commit d1a14f1d78
3 changed files with 31 additions and 12 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.jet.jps.build;
import com.google.common.collect.Maps;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
@@ -35,6 +36,7 @@ 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.config.IncrementalCompilation;
import org.jetbrains.jet.jps.JpsKotlinCompilerSettings;
import org.jetbrains.jet.utils.PathUtil;
import org.jetbrains.jps.ModuleChunk;
@@ -191,9 +193,11 @@ public class KotlinBuilder extends ModuleLevelBuilder {
}
for (SimpleOutputItem outputItem : outputItemCollector.getOutputs()) {
// TODO this is a hack: we don't remove
if (outputItem.getOutputFile().getName().endsWith("Package.class")) {
continue;
if (IncrementalCompilation.ENABLED) {
// TODO this is a hack: we don't remove
if (outputItem.getOutputFile().getName().endsWith("Package.class")) {
continue;
}
}
BuildTarget<?> target = null;
Collection<File> sourceFiles = outputItem.getSourceFiles();
@@ -208,14 +212,19 @@ public class KotlinBuilder extends ModuleLevelBuilder {
paths(sourceFiles));
}
// TODO should mark dependencies as dirty, as well
FSOperations.markDirty(context, chunk, new FileFilter() {
@Override
public boolean accept(@NotNull File file) {
return !allCompiledFiles.contains(file);
}
});
return ExitCode.ADDITIONAL_PASS_REQUIRED;
if (IncrementalCompilation.ENABLED) {
// TODO should mark dependencies as dirty, as well
FSOperations.markDirty(context, chunk, new FileFilter() {
@Override
public boolean accept(@NotNull File file) {
return !allCompiledFiles.contains(file);
}
});
return ExitCode.ADDITIONAL_PASS_REQUIRED;
}
else {
return ExitCode.OK;
}
}
private static Set<File> getAllCompiledFilesContainer(CompileContext context) {
@@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.compiler.runner.KotlinModuleDescriptionBuilder;
import org.jetbrains.jet.compiler.runner.KotlinModuleDescriptionBuilderFactory;
import org.jetbrains.jet.compiler.runner.KotlinModuleXmlBuilderFactory;
import org.jetbrains.jet.config.IncrementalCompilation;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.logging.ProjectBuilderLogger;
@@ -56,7 +57,7 @@ public class KotlinBuilderModuleScriptGenerator {
public static File generateModuleDescription(
CompileContext context,
ModuleChunk chunk,
List<File> sourceFiles
List<File> sourceFiles // ignored for non-incremental compilation
)
throws IOException
{
@@ -72,6 +73,10 @@ public class KotlinBuilderModuleScriptGenerator {
for (ModuleBuildTarget target : chunk.getTargets()) {
File outputDir = getOutputDir(target);
if (!IncrementalCompilation.ENABLED) {
sourceFiles = new ArrayList<File>(KotlinSourceFileCollector.getAllKotlinSourceFiles(target));
}
if (sourceFiles.size() > 0) {
noSources = false;
@@ -28,6 +28,7 @@ import org.jetbrains.jps.builders.logging.BuildLoggingManager
import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.util.JpsPathUtil
import com.intellij.testFramework.UsefulTestCase
import org.jetbrains.jet.config.IncrementalCompilation
public class IncrementalJpsTest : JpsBuildTestCase() {
private val testDataDir: File
@@ -64,6 +65,10 @@ public class IncrementalJpsTest : JpsBuildTestCase() {
}
private fun doTest() {
if (!IncrementalCompilation.ENABLED) {
return
}
addModule("module", array<String>(getAbsolutePath("src")), null, null, addJdk("my jdk"))
AbstractKotlinJpsBuildTestCase.addKotlinRuntimeDependency(myProject!!)