diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt index e4ab18b6c9e..02dfc17b0a3 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationCache.kt @@ -30,7 +30,6 @@ interface ScriptConfigurationCache { fun setApplied(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot) fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot) - fun markOutOfDate(scope: ScriptConfigurationCacheScope) fun allApplied(): Map fun clear() @@ -39,7 +38,6 @@ interface ScriptConfigurationCache { sealed class ScriptConfigurationCacheScope { object All : ScriptConfigurationCacheScope() class File(val file: KtFile) : ScriptConfigurationCacheScope() - class Except(val file: KtFile) : ScriptConfigurationCacheScope() } data class ScriptConfigurationState( diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt index 04032005632..34720ae9e15 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationMemoryCache.kt @@ -36,29 +36,6 @@ open class ScriptConfigurationMemoryCache( memoryCache.put(file, old.copy(loaded = configurationSnapshot)) } - @Synchronized - override fun markOutOfDate(scope: ScriptConfigurationCacheScope) { - when (scope) { - is ScriptConfigurationCacheScope.File -> { - val file = scope.file.originalFile.virtualFile - markFileOutOfDate(file) - } - is ScriptConfigurationCacheScope.Except -> { - val file = scope.file.originalFile.virtualFile - memoryCache.entrySet().forEach { - if (it.key != file) { - markFileOutOfDate(it.key) - } - } - } - is ScriptConfigurationCacheScope.All ->{ - memoryCache.entrySet().forEach { - markFileOutOfDate(it.key) - } - } - } - } - @Synchronized @Suppress("UNCHECKED_CAST") override fun allApplied(): Map { @@ -76,14 +53,4 @@ open class ScriptConfigurationMemoryCache( memoryCache.clear() } - @Synchronized - private fun markFileOutOfDate(file: VirtualFile) { - val old = memoryCache[file] ?: return - memoryCache.put( - file, old.copy( - applied = old.applied?.copy(inputs = CachedConfigurationInputs.OutOfDate), - loaded = old.loaded?.copy(inputs = CachedConfigurationInputs.OutOfDate) - ) - ) - } } \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptConfigurationUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptConfigurationUpdater.kt index 0df967cb3dc..020d11f6232 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptConfigurationUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptConfigurationUpdater.kt @@ -24,11 +24,6 @@ interface ScriptConfigurationUpdater { */ fun ensureConfigurationUpToDate(files: List): Boolean - /** - * Invalidate current configuration - */ - fun postponeConfigurationReload(scope: ScriptConfigurationCacheScope) - /** * Suggest to update script configuration if configuration for [file] is out of date */ diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt index 6d3d0e40d8b..d32b10d3c82 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt @@ -10,10 +10,13 @@ import junit.framework.AssertionFailedError import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.core.script.applySuggestedScriptConfiguration -import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCacheScope +import org.jetbrains.kotlin.idea.core.script.configuration.loader.DefaultScriptConfigurationLoader +import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptConfigurationLoadingContext import org.jetbrains.kotlin.idea.core.script.configuration.utils.areSimilar import org.jetbrains.kotlin.idea.core.script.configuration.utils.getKtFile import org.jetbrains.kotlin.idea.core.script.hasSuggestedScriptConfiguration +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper import org.jetbrains.kotlin.test.JUnitParameterizedWithIdeaConfigurationRunner import org.jetbrains.kotlin.test.RunnerFactoryWithMuteInDatabase @@ -95,8 +98,24 @@ class GradleKtsImportTest : GradleImportingTestCase() { // reload configuration and check this it is not changed scripts.forEach { - scriptConfigurationManager.updater.postponeConfigurationReload(ScriptConfigurationCacheScope.File(it.psiFile)) - val reloadedConfiguration = scriptConfigurationManager.getConfiguration(it.psiFile)!! + val reloadedConfiguration = scriptConfigurationManager.forceReloadConfiguration( + it.virtualFile, + object : DefaultScriptConfigurationLoader(it.psiFile.project) { + override fun shouldRunInBackground(scriptDefinition: ScriptDefinition) = false + override fun loadDependencies( + isFirstLoad: Boolean, + ktFile: KtFile, + scriptDefinition: ScriptDefinition, + context: ScriptConfigurationLoadingContext + ): Boolean { + val vFile = ktFile.originalFile.virtualFile + val result = getConfigurationThroughScriptingApi(ktFile, vFile, scriptDefinition) + context.saveNewConfiguration(vFile, result) + return true + } + } + ) + requireNotNull(reloadedConfiguration) assertTrue(areSimilar(it.imported, reloadedConfiguration)) it.assertNoSuggestedConfiguration() }