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
@@ -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()
}
}
@@ -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()
}
}
@@ -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)
}