Add checkbox for experimental incremental compilation; Make simple incremental compilation on by default

This commit is contained in:
Alexey Tsvetkov
2015-12-15 17:32:01 +03:00
parent 0ba0ea5e1f
commit 5330248f6e
6 changed files with 11 additions and 24 deletions
@@ -24,8 +24,8 @@ public class KotlinBuildProcessParametersProvider(private val compilerWorkspaceS
): BuildProcessParametersProvider() { ): BuildProcessParametersProvider() {
override fun getVMArguments(): MutableList<String> { override fun getVMArguments(): MutableList<String> {
val res = arrayListOf<String>() val res = arrayListOf<String>()
if (!compilerWorkspaceSettings.incrementalCompilationEnabled) { if (compilerWorkspaceSettings.preciseIncrementalEnabled) {
res.add("-Dkotlin.incremental.compilation=false") res.add("-Dkotlin.incremental.compilation.experimental=true")
} }
if (compilerWorkspaceSettings.enableDaemon) { if (compilerWorkspaceSettings.enableDaemon) {
res.add("-Dkotlin.daemon.enabled") res.add("-Dkotlin.daemon.enabled")
@@ -71,12 +71,12 @@
</clientProperties> </clientProperties>
<border type="etched" title-resource-bundle="org/jetbrains/kotlin/idea/KotlinBundle" title-key="kotlin.compiler.jvm.option.panel.title"/> <border type="etched" title-resource-bundle="org/jetbrains/kotlin/idea/KotlinBundle" title-key="kotlin.compiler.jvm.option.panel.title"/>
<children> <children>
<component id="c6928" class="javax.swing.JCheckBox" binding="incrementalCompilationCheckBox"> <component id="d8f92" class="javax.swing.JCheckBox" binding="enablePreciseIncrementalCheckBox">
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<text value="Enable incremental compilation"/> <text value="Enable precise incremental compilation (experimental)"/>
</properties> </properties>
</component> </component>
</children> </children>
@@ -54,11 +54,11 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
private TextFieldWithBrowseButton outputPostfixFile; private TextFieldWithBrowseButton outputPostfixFile;
private JLabel labelForOutputPrefixFile; private JLabel labelForOutputPrefixFile;
private JLabel labelForOutputPostfixFile; private JLabel labelForOutputPostfixFile;
private JCheckBox incrementalCompilationCheckBox;
private JLabel labelForOutputDirectory; private JLabel labelForOutputDirectory;
private JTextField outputDirectory; private JTextField outputDirectory;
private JCheckBox copyRuntimeFilesCheckBox; private JCheckBox copyRuntimeFilesCheckBox;
private JCheckBox keepAliveCheckBox; private JCheckBox keepAliveCheckBox;
private JCheckBox enablePreciseIncrementalCheckBox;
public KotlinCompilerConfigurableTab(Project project) { public KotlinCompilerConfigurableTab(Project project) {
this.commonCompilerArguments = KotlinCommonCompilerArgumentsHolder.getInstance(project).getSettings(); this.commonCompilerArguments = KotlinCommonCompilerArgumentsHolder.getInstance(project).getSettings();
@@ -108,7 +108,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
ComparingUtils.isModified(copyRuntimeFilesCheckBox, compilerSettings.getCopyJsLibraryFiles()) || ComparingUtils.isModified(copyRuntimeFilesCheckBox, compilerSettings.getCopyJsLibraryFiles()) ||
ComparingUtils.isModified(outputDirectory, compilerSettings.getOutputDirectoryForJsLibraryFiles()) || ComparingUtils.isModified(outputDirectory, compilerSettings.getOutputDirectoryForJsLibraryFiles()) ||
ComparingUtils.isModified(incrementalCompilationCheckBox, compilerWorkspaceSettings.getIncrementalCompilationEnabled()) || ComparingUtils.isModified(enablePreciseIncrementalCheckBox, compilerWorkspaceSettings.getPreciseIncrementalEnabled()) ||
ComparingUtils.isModified(keepAliveCheckBox, compilerWorkspaceSettings.getEnableDaemon()) || ComparingUtils.isModified(keepAliveCheckBox, compilerWorkspaceSettings.getEnableDaemon()) ||
ComparingUtils.isModified(generateSourceMapsCheckBox, k2jsCompilerArguments.sourceMap) || ComparingUtils.isModified(generateSourceMapsCheckBox, k2jsCompilerArguments.sourceMap) ||
@@ -123,7 +123,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
compilerSettings.setCopyJsLibraryFiles(copyRuntimeFilesCheckBox.isSelected()); compilerSettings.setCopyJsLibraryFiles(copyRuntimeFilesCheckBox.isSelected());
compilerSettings.setOutputDirectoryForJsLibraryFiles(outputDirectory.getText()); compilerSettings.setOutputDirectoryForJsLibraryFiles(outputDirectory.getText());
compilerWorkspaceSettings.setIncrementalCompilationEnabled(incrementalCompilationCheckBox.isSelected()); compilerWorkspaceSettings.setPreciseIncrementalEnabled(enablePreciseIncrementalCheckBox.isSelected());
boolean oldEnableDaemon = compilerWorkspaceSettings.getEnableDaemon(); boolean oldEnableDaemon = compilerWorkspaceSettings.getEnableDaemon();
compilerWorkspaceSettings.setEnableDaemon(keepAliveCheckBox.isSelected()); compilerWorkspaceSettings.setEnableDaemon(keepAliveCheckBox.isSelected());
@@ -143,7 +143,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
copyRuntimeFilesCheckBox.setSelected(compilerSettings.getCopyJsLibraryFiles()); copyRuntimeFilesCheckBox.setSelected(compilerSettings.getCopyJsLibraryFiles());
outputDirectory.setText(compilerSettings.getOutputDirectoryForJsLibraryFiles()); outputDirectory.setText(compilerSettings.getOutputDirectoryForJsLibraryFiles());
incrementalCompilationCheckBox.setSelected(compilerWorkspaceSettings.getIncrementalCompilationEnabled()); enablePreciseIncrementalCheckBox.setSelected(compilerWorkspaceSettings.getPreciseIncrementalEnabled());
keepAliveCheckBox.setSelected(compilerWorkspaceSettings.getEnableDaemon()); keepAliveCheckBox.setSelected(compilerWorkspaceSettings.getEnableDaemon());
generateSourceMapsCheckBox.setSelected(k2jsCompilerArguments.sourceMap); generateSourceMapsCheckBox.setSelected(k2jsCompilerArguments.sourceMap);
@@ -29,7 +29,7 @@ import com.intellij.util.xmlb.XmlSerializerUtil
) )
) )
public class KotlinCompilerWorkspaceSettings() : PersistentStateComponent<KotlinCompilerWorkspaceSettings> { public class KotlinCompilerWorkspaceSettings() : PersistentStateComponent<KotlinCompilerWorkspaceSettings> {
public var incrementalCompilationEnabled: Boolean = true public var preciseIncrementalEnabled: Boolean = false
public var enableDaemon: Boolean = true public var enableDaemon: Boolean = true
override fun getState(): KotlinCompilerWorkspaceSettings { override fun getState(): KotlinCompilerWorkspaceSettings {
@@ -50,10 +50,6 @@ public class CreateIncrementalCompilationBackup: AnAction("Create backup for deb
val ZIP_FRACTION = 1.0 - PATCHES_FRACTION - LOGS_FRACTION - PROJECT_SYSTEM_FRACTION val ZIP_FRACTION = 1.0 - PATCHES_FRACTION - LOGS_FRACTION - PROJECT_SYSTEM_FRACTION
} }
override fun update(e: AnActionEvent) {
e.presentation.isVisible = e.project?.let { incrementalCompilationEnabled(it) } ?: false
}
override fun actionPerformed(e: AnActionEvent) { override fun actionPerformed(e: AnActionEvent) {
val project = e.getProject()!! val project = e.getProject()!!
val projectBaseDir = File(project.getBaseDir()!!.getPath()) val projectBaseDir = File(project.getBaseDir()!!.getPath())
@@ -17,13 +17,10 @@
package org.jetbrains.kotlin.idea.internal.makeBackup package org.jetbrains.kotlin.idea.internal.makeBackup
import com.intellij.history.LocalHistory import com.intellij.history.LocalHistory
import com.intellij.openapi.compiler.CompileTask
import com.intellij.openapi.compiler.CompileContext import com.intellij.openapi.compiler.CompileContext
import java.util.Random import com.intellij.openapi.compiler.CompileTask
import com.intellij.openapi.util.Key import com.intellij.openapi.util.Key
import com.intellij.openapi.project.Project import java.util.*
import com.intellij.openapi.components.ServiceManager
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerWorkspaceSettings
val random = Random() val random = Random()
@@ -33,8 +30,6 @@ public class MakeBackupCompileTask: CompileTask {
override fun execute(context: CompileContext?): Boolean { override fun execute(context: CompileContext?): Boolean {
val project = context!!.getProject()!! val project = context!!.getProject()!!
if (!incrementalCompilationEnabled(project)) return true
val localHistory = LocalHistory.getInstance()!! val localHistory = LocalHistory.getInstance()!!
val label = HISTORY_LABEL_PREFIX + Integer.toHexString(random.nextInt()) val label = HISTORY_LABEL_PREFIX + Integer.toHexString(random.nextInt())
localHistory.putSystemLabel(project, label) localHistory.putSystemLabel(project, label)
@@ -45,7 +40,3 @@ public class MakeBackupCompileTask: CompileTask {
} }
} }
fun incrementalCompilationEnabled(project: Project): Boolean {
return ServiceManager.getService(project, javaClass<KotlinCompilerWorkspaceSettings>()).incrementalCompilationEnabled
}