Configuration: Invalidate caches when changing compiler options

#KT-25515 Fixed
This commit is contained in:
Alexey Sedunov
2018-07-25 18:03:50 +03:00
parent a54f410a15
commit a8f8ecc012
5 changed files with 17 additions and 5 deletions
@@ -42,6 +42,7 @@ import org.jetbrains.kotlin.idea.PluginStartupComponent;
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings;
import org.jetbrains.kotlin.idea.facet.DescriptionListCellRenderer;
import org.jetbrains.kotlin.idea.facet.KotlinFacet;
import org.jetbrains.kotlin.idea.roots.ProjectRootUtilsKt;
import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt;
import javax.swing.*;
@@ -489,14 +490,15 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
boolean shouldInvalidateCaches =
!getSelectedLanguageVersionView().equals(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)) ||
!getSelectedAPIVersionView().equals(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)) ||
!coroutineSupportComboBox.getSelectedItem().equals(CoroutineSupport.byCompilerArguments(commonCompilerArguments));
!coroutineSupportComboBox.getSelectedItem().equals(CoroutineSupport.byCompilerArguments(commonCompilerArguments)) ||
!additionalArgsOptionsField.getText().equals(compilerSettings.getAdditionalArguments());
if (shouldInvalidateCaches) {
ApplicationUtilsKt.runWriteAction(
new Function0<Object>() {
@Override
public Object invoke() {
ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.INSTANCE, false, true);
ProjectRootUtilsKt.invalidateProjectRoots(project);
return null;
}
}
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.idea.configuration.BuildSystemType
import org.jetbrains.kotlin.idea.configuration.getBuildSystemType
import org.jetbrains.kotlin.idea.facet.KotlinFacet
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots
import org.jetbrains.kotlin.idea.util.projectStructure.module
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile
@@ -44,6 +45,7 @@ class MakeModuleExperimentalFix(
compilerSettings.additionalArguments += " $compilerArgument"
facetSettings.updateMergedArguments()
project.invalidateProjectRoots()
} finally {
modelsProvider.dispose()
}
@@ -5,7 +5,10 @@
package org.jetbrains.kotlin.idea.roots
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.ModifiableRootModel
import com.intellij.openapi.roots.ex.ProjectRootManagerEx
import com.intellij.openapi.util.EmptyRunnable
import org.jetbrains.jps.model.JpsElement
import org.jetbrains.jps.model.ex.JpsElementBase
import org.jetbrains.jps.model.java.JavaResourceRootType
@@ -50,4 +53,8 @@ fun TargetPlatformKind<*>.asTargetPlatform() = when (this) {
is TargetPlatformKind.Jvm -> JvmPlatform
is TargetPlatformKind.JavaScript -> JsPlatform
is TargetPlatformKind.Common -> TargetPlatform.Common
}
fun Project.invalidateProjectRoots() {
ProjectRootManagerEx.getInstanceEx(this).makeRootsChange(EmptyRunnable.INSTANCE, false, true)
}