gradle.kts, minor: cleanup & simplify code

This commit is contained in:
Sergey Rostov
2020-06-14 21:11:19 +03:00
parent b2e629dceb
commit 07654b4c0e
2 changed files with 12 additions and 19 deletions
@@ -175,13 +175,14 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
} else { } else {
val autoReloadEnabled = KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition) val autoReloadEnabled = KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition)
val postponeLoading = !autoReloadEnabled && async.any { it.isPostponedLoad(virtualFile) } val postponeLoading = !autoReloadEnabled && async.any { it.isPostponedLoad(virtualFile) }
val forceSkipNotification = autoReloadEnabled || postponeLoading
if (postponeLoading) { if (postponeLoading) {
LoadScriptConfigurationNotificationFactory.showNotification(virtualFile, project) { LoadScriptConfigurationNotificationFactory.showNotification(virtualFile, project) {
runAsyncLoaders(file, virtualFile, scriptDefinition, async, isLoadingPostponed = true) runAsyncLoaders(file, virtualFile, scriptDefinition, async, forceSkipNotification)
} }
} else { } else {
runAsyncLoaders(file, virtualFile, scriptDefinition, async, isLoadingPostponed = false) runAsyncLoaders(file, virtualFile, scriptDefinition, async, forceSkipNotification)
} }
} }
} }
@@ -197,7 +198,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
virtualFile: VirtualFile, virtualFile: VirtualFile,
scriptDefinition: ScriptDefinition, scriptDefinition: ScriptDefinition,
loaders: List<ScriptConfigurationLoader>, loaders: List<ScriptConfigurationLoader>,
isLoadingPostponed: Boolean forceSkipNotification: Boolean
) { ) {
backgroundExecutor.ensureScheduled(virtualFile) { backgroundExecutor.ensureScheduled(virtualFile) {
val cached = getCachedConfigurationState(virtualFile) val cached = getCachedConfigurationState(virtualFile)
@@ -205,8 +206,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
val applied = cached?.applied val applied = cached?.applied
if (applied != null && applied.inputs.isUpToDate(project, virtualFile)) { if (applied != null && applied.inputs.isUpToDate(project, virtualFile)) {
// in case user reverted to applied configuration // in case user reverted to applied configuration
val skipNotification = isLoadingPostponed || KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition) suggestOrSaveConfiguration(virtualFile, applied, forceSkipNotification)
suggestOrSaveConfiguration(virtualFile, applied, skipNotification)
} else if (cached == null || !cached.isUpToDate(project, virtualFile)) { } else if (cached == null || !cached.isUpToDate(project, virtualFile)) {
// don't start loading if nothing was changed // don't start loading if nothing was changed
// (in case we checking for up-to-date and loading concurrently) // (in case we checking for up-to-date and loading concurrently)
@@ -216,20 +216,15 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
} }
} }
fun forceReloadConfiguration(file: KtFile, loader: ScriptConfigurationLoader): ScriptCompilationConfigurationWrapper? { @TestOnly
fun runLoader(file: KtFile, loader: ScriptConfigurationLoader): ScriptCompilationConfigurationWrapper? {
val virtualFile = file.originalFile.virtualFile ?: return null val virtualFile = file.originalFile.virtualFile ?: return null
if (!ScriptDefinitionsManager.getInstance(project).isReady()) return null if (!ScriptDefinitionsManager.getInstance(project).isReady()) return null
val scriptDefinition = file.findScriptDefinition() ?: return null val scriptDefinition = file.findScriptDefinition() ?: return null
manager.updater.update { manager.updater.update {
if (!loader.shouldRunInBackground(scriptDefinition)) { loader.loadDependencies(false, file, scriptDefinition, loadingContext)
loader.loadDependencies(false, file, scriptDefinition, loadingContext)
} else {
backgroundExecutor.ensureScheduled(virtualFile) {
loader.loadDependencies(false, file, scriptDefinition, loadingContext)
}
}
} }
return getAppliedConfiguration(virtualFile)?.configuration return getAppliedConfiguration(virtualFile)?.configuration
@@ -259,7 +254,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
private fun suggestOrSaveConfiguration( private fun suggestOrSaveConfiguration(
file: VirtualFile, file: VirtualFile,
newResult: ScriptConfigurationSnapshot, newResult: ScriptConfigurationSnapshot,
skipNotification: Boolean forceSkipNotification: Boolean
) { ) {
saveLock.withLock { saveLock.withLock {
debug(file) { "configuration received = $newResult" } debug(file) { "configuration received = $newResult" }
@@ -278,11 +273,11 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
saveReports(file, newResult.reports) saveReports(file, newResult.reports)
file.removeScriptDependenciesNotificationPanel(project) file.removeScriptDependenciesNotificationPanel(project)
} else { } else {
val autoReload = skipNotification val skipNotification = forceSkipNotification
|| oldConfiguration == null || oldConfiguration == null
|| ApplicationManager.getApplication().isUnitTestModeWithoutScriptLoadingNotification || ApplicationManager.getApplication().isUnitTestModeWithoutScriptLoadingNotification
if (autoReload) { if (skipNotification) {
if (oldConfiguration != null) { if (oldConfiguration != null) {
file.removeScriptDependenciesNotificationPanel(project) file.removeScriptDependenciesNotificationPanel(project)
} }
@@ -20,12 +20,10 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
import org.jetbrains.kotlin.test.JUnitParameterizedWithIdeaConfigurationRunner import org.jetbrains.kotlin.test.JUnitParameterizedWithIdeaConfigurationRunner
import org.jetbrains.kotlin.test.RunnerFactoryWithMuteInDatabase
import org.jetbrains.plugins.gradle.settings.GradleSettings import org.jetbrains.plugins.gradle.settings.GradleSettings
import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized.Parameters import org.junit.runners.Parameterized.Parameters
import java.io.File import java.io.File
@@ -98,7 +96,7 @@ class GradleKtsImportTest : GradleImportingTestCase() {
// reload configuration and check this it is not changed // reload configuration and check this it is not changed
scripts.forEach { scripts.forEach {
val reloadedConfiguration = scriptConfigurationManager.default.forceReloadConfiguration( val reloadedConfiguration = scriptConfigurationManager.default.runLoader(
it.psiFile, it.psiFile,
object : DefaultScriptConfigurationLoader(it.psiFile.project) { object : DefaultScriptConfigurationLoader(it.psiFile.project) {
override fun shouldRunInBackground(scriptDefinition: ScriptDefinition) = false override fun shouldRunInBackground(scriptDefinition: ScriptDefinition) = false