From ef4053d5c3658645f8867cb5da901d6b84edef2c Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 5 Sep 2018 17:03:18 +0300 Subject: [PATCH] Invalidate module source roots in create actual to fix exceptions Related to KT-19586 --- .../org/jetbrains/kotlin/idea/core/packageUtils.kt | 2 ++ .../org/jetbrains/kotlin/idea/roots/rootUtils.kt | 14 ++++++++++++++ .../KotlinCompilerConfigurableTab.java | 4 ++-- .../kotlin/idea/roots/projectRootUtils.kt | 7 ------- 4 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/roots/rootUtils.kt diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/packageUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/packageUtils.kt index 7822e53fe11..315f2cd4879 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/packageUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/packageUtils.kt @@ -21,6 +21,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootProperties import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.kotlin.config.KotlinSourceRootType import org.jetbrains.kotlin.idea.caches.PerModulePackageCacheService +import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots import org.jetbrains.kotlin.idea.util.rootManager import org.jetbrains.kotlin.idea.util.sourceRoot import org.jetbrains.kotlin.name.FqName @@ -103,6 +104,7 @@ private fun Module.getOrConfigureKotlinSourceRoots(): List { return runWriteAction { val rootDir = rootManager.contentRoots.firstOrNull() rootDir?.createChildDirectory(project, "kotlin") + project.invalidateProjectRoots() getNonGeneratedKotlinSourceRoots() } } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/roots/rootUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/roots/rootUtils.kt new file mode 100644 index 00000000000..af372a2d2fa --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/roots/rootUtils.kt @@ -0,0 +1,14 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.roots + +import com.intellij.openapi.project.Project +import com.intellij.openapi.roots.ex.ProjectRootManagerEx +import com.intellij.openapi.util.EmptyRunnable + +fun Project.invalidateProjectRoots() { + ProjectRootManagerEx.getInstanceEx(this).makeRootsChange(EmptyRunnable.INSTANCE, false, true) +} \ No newline at end of file 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 6cb6776d72b..35ae89e9d4a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -40,7 +40,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.roots.RootUtilsKt; import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt; import org.jetbrains.kotlin.platform.IdePlatform; import org.jetbrains.kotlin.platform.IdePlatformKind; @@ -524,7 +524,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co new Function0() { @Override public Object invoke() { - ProjectRootUtilsKt.invalidateProjectRoots(project); + RootUtilsKt.invalidateProjectRoots(project); return null; } } diff --git a/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt b/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt index 8b39375affe..20fd0c1b658 100644 --- a/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt @@ -5,10 +5,7 @@ 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 @@ -44,7 +41,3 @@ fun migrateNonJvmSourceFolders(modifiableRootModel: ModifiableRootModel) { } } } - -fun Project.invalidateProjectRoots() { - ProjectRootManagerEx.getInstanceEx(this).makeRootsChange(EmptyRunnable.INSTANCE, false, true) -} \ No newline at end of file