Added incremental compilation flag. For publishing intermediate implementation.
Original commit: a502374a62
This commit is contained in:
@@ -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) {
|
||||
|
||||
+6
-1
@@ -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!!)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user