From a8f8ecc012bf31b090ceca6ff63909252f57ed1d Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 25 Jul 2018 18:03:50 +0300 Subject: [PATCH] Configuration: Invalidate caches when changing compiler options #KT-25515 Fixed --- .../kotlin/idea/quickfix/ChangeCoroutineSupportFix.kt | 3 ++- .../kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt | 4 ++-- .../configuration/KotlinCompilerConfigurableTab.java | 6 ++++-- .../kotlin/idea/quickfix/MakeModuleExperimentalFix.kt | 2 ++ .../org/jetbrains/kotlin/idea/roots/projectRootUtils.kt | 7 +++++++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeCoroutineSupportFix.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeCoroutineSupportFix.kt index df314b8a19a..76f600216e3 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeCoroutineSupportFix.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeCoroutineSupportFix.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.idea.configuration.BuildSystemType import org.jetbrains.kotlin.idea.configuration.findApplicableConfigurator import org.jetbrains.kotlin.idea.configuration.getBuildSystemType import org.jetbrains.kotlin.idea.facet.KotlinFacet +import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots import org.jetbrains.kotlin.psi.KtFile sealed class ChangeCoroutineSupportFix( @@ -54,7 +55,7 @@ sealed class ChangeCoroutineSupportFix( LanguageFeature.State.ENABLED_WITH_ERROR, LanguageFeature.State.DISABLED -> CommonCompilerArguments.ERROR } } - ProjectRootManagerEx.getInstanceEx(project).makeRootsChange({}, false, true) + project.invalidateProjectRoots() } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt index 5a7a802539a..e1338bc236f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt @@ -11,7 +11,6 @@ import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleUtilCore import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ModuleRootManager -import com.intellij.openapi.roots.ex.ProjectRootManagerEx import com.intellij.openapi.roots.libraries.Library import com.intellij.openapi.ui.Messages import com.intellij.psi.PsiElement @@ -27,6 +26,7 @@ import org.jetbrains.kotlin.idea.configuration.getBuildSystemType import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware import org.jetbrains.kotlin.idea.facet.KotlinFacet import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion +import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.idea.versions.findKotlinRuntimeLibrary import org.jetbrains.kotlin.idea.versions.updateLibraries @@ -91,7 +91,7 @@ sealed class EnableUnsupportedFeatureFix( languageVersion = targetVersion.versionString } } - ProjectRootManagerEx.getInstanceEx(project).makeRootsChange({}, false, true) + project.invalidateProjectRoots() } } diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index d18575670e7..54ba779f57c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -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() { @Override public Object invoke() { - ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.INSTANCE, false, true); + ProjectRootUtilsKt.invalidateProjectRoots(project); return null; } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt index da0f79d10bb..d0b6216010e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt @@ -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() } diff --git a/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt b/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt index 23833ea999e..e4301387c80 100644 --- a/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt @@ -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) } \ No newline at end of file