From 75a23b4bc469356fb3ff1edb5fd0b089e3804f73 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Wed, 13 Nov 2019 11:45:43 +0300 Subject: [PATCH] Minor: changes after review --- .../DefaultScriptConfigurationManager.kt | 29 ++++++++++--------- .../listener/ScriptChangesNotifier.kt | 2 +- .../gradle/GradleScriptConfigurationLoader.kt | 6 ++-- idea/resources/META-INF/gradle.xml | 4 +-- idea/resources/META-INF/gradle.xml.183 | 4 +-- .../loading/async/template/template.kt | 7 +---- .../AbstractScriptConfigurationLoadingTest.kt | 2 ++ .../script/AbstractScriptConfigurationTest.kt | 6 +++- .../script/ScriptConfigurationLoadingTest.kt | 6 ++-- 9 files changed, 34 insertions(+), 32 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptConfigurationManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptConfigurationManager.kt index 96db03e831a..681f8537290 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptConfigurationManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/DefaultScriptConfigurationManager.kt @@ -18,6 +18,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.jetbrains.kotlin.idea.core.script.* import org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptConfigurationManagerExtensions.LOADER +import org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptConfigurationManagerExtensions.LISTENER import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationFileAttributeCache import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationMemoryCache import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationSnapshot @@ -107,18 +108,23 @@ internal class DefaultScriptConfigurationManager(project: Project) : if (ApplicationManager.getApplication().isUnitTestMode) TestingBackgroundExecutor(rootsIndexer) else DefaultBackgroundExecutor(project, rootsIndexer) + private val outsiderLoader = ScriptOutsiderFileConfigurationLoader(project) private val fileAttributeCache = ScriptConfigurationFileAttributeCache(project) + private val defaultLoader = DefaultScriptConfigurationLoader(project) + private val loaders: Sequence + get() = sequence { + yield(outsiderLoader) + yield(fileAttributeCache) + yieldAll(LOADER.getPoint(project).extensionList) + yield(defaultLoader) + } - private val loaders: List - get() = listOf( - ScriptOutsiderFileConfigurationLoader(project), - ScriptConfigurationFileAttributeCache(project) - ) + project[LOADER] + listOf( - DefaultScriptConfigurationLoader(project) - ) - - private val listeners: List - get() = project[DefaultScriptConfigurationManagerExtensions.LISTENER] + listOf(DefaultScriptChangeListener()) + private val defaultListener = DefaultScriptChangeListener() + private val listeners: Sequence + get() = sequence { + yieldAll(LISTENER.getPoint(project).extensionList) + yield(defaultListener) + } private val notifier = ScriptChangesNotifier(project, updater, listeners) @@ -131,9 +137,6 @@ internal class DefaultScriptConfigurationManager(project: Project) : } } - private operator fun Project.get(epName: ExtensionPointName): List = - Extensions.getArea(this).getExtensionPoint(epName).extensionList - /** * Will be called on [cache] miss to initiate loading of [file]'s script configuration. * diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptChangesNotifier.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptChangesNotifier.kt index e2e31607777..cd065867f99 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptChangesNotifier.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/listener/ScriptChangesNotifier.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.scripting.definitions.isNonScript internal class ScriptChangesNotifier( private val project: Project, private val updater: ScriptConfigurationUpdater, - private val listeners: List + private val listeners: Sequence ) { private val scriptsQueue = Alarm(Alarm.ThreadToUse.SWING_THREAD, project) private val scriptChangesListenerDelay = 1400 diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationLoader.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationLoader.kt index 78ff2fb214c..7bc686ed8bc 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationLoader.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptConfigurationLoader.kt @@ -29,11 +29,11 @@ class GradleScriptConfigurationLoader(project: Project) : DefaultScriptConfigura override fun loadDependencies( isFirstLoad: Boolean, - virtualFile: VirtualFile, + ktFile: KtFile, scriptDefinition: ScriptDefinition, context: ScriptConfigurationLoadingContext ): Boolean { - if (!isGradleKotlinScript(virtualFile)) return false + if (!isGradleKotlinScript(ktFile.originalFile.virtualFile)) return false if (useProjectImport) { // do nothing, project import notification will be already showed @@ -49,7 +49,7 @@ class GradleScriptConfigurationLoader(project: Project) : DefaultScriptConfigura } } - return super.loadDependencies(isFirstLoad, virtualFile, scriptDefinition, context) + return super.loadDependencies(isFirstLoad, ktFile, scriptDefinition, context) } } diff --git a/idea/resources/META-INF/gradle.xml b/idea/resources/META-INF/gradle.xml index a4360c8c29d..35b3e0a1ccd 100644 --- a/idea/resources/META-INF/gradle.xml +++ b/idea/resources/META-INF/gradle.xml @@ -13,8 +13,8 @@ - - + + diff --git a/idea/resources/META-INF/gradle.xml.183 b/idea/resources/META-INF/gradle.xml.183 index 2416b27df72..2d8e1aa15f1 100644 --- a/idea/resources/META-INF/gradle.xml.183 +++ b/idea/resources/META-INF/gradle.xml.183 @@ -13,8 +13,8 @@ - - + + diff --git a/idea/testData/script/definition/loading/async/template/template.kt b/idea/testData/script/definition/loading/async/template/template.kt index 245d2c4a65f..bf9ab24a1f1 100644 --- a/idea/testData/script/definition/loading/async/template/template.kt +++ b/idea/testData/script/definition/loading/async/template/template.kt @@ -34,9 +34,4 @@ class TestDependenciesResolver : AsyncDependenciesResolver { @ScriptExpectedLocations([ScriptExpectedLocation.Everywhere]) @ScriptTemplateDefinition(TestDependenciesResolver::class, scriptFilePattern = "script.kts") -class Template : Base() - -open class Base { - val i = 3 - val str = "" -} \ No newline at end of file +class Template \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationLoadingTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationLoadingTest.kt index df2cca1d6ca..fa5240bdb4b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationLoadingTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationLoadingTest.kt @@ -141,5 +141,7 @@ abstract class AbstractScriptConfigurationLoadingTest : AbstractScriptConfigurat assertAndDoAllBackgroundTasks() assertSingleLoading() assertAppliedConfiguration("initial") + + checkHighlighting() } } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt index 4b0075ebe2e..33512f6b80f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt @@ -271,10 +271,14 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() { protected open fun loadScriptConfigurationSynchronously(script: VirtualFile) { updateScriptDependenciesSynchronously(myFile, project) - VfsUtil.markDirtyAndRefresh(false, true, true, project.baseDir) // This is needed because updateScriptDependencies invalidates psiFile that was stored in myFile field + VfsUtil.markDirtyAndRefresh(false, true, true, project.baseDir) myFile = psiManager.findFile(script) + checkHighlighting() + } + + protected fun checkHighlighting() { val ktFile = myFile as KtFile val reports = IdeScriptReportSink.getReports(ktFile) val isFatalErrorPresent = reports.any { it.severity == ScriptDiagnostic.Severity.FATAL } diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationLoadingTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationLoadingTest.kt index 065af568b53..434bce6f0da 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationLoadingTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationLoadingTest.kt @@ -158,12 +158,10 @@ class ScriptConfigurationLoadingTest : AbstractScriptConfigurationLoadingTest() fun testLoadingForUsagesSearch() { assertAndLoadInitialConfiguration() + assertTrue(scriptConfigurationManager.updater.ensureConfigurationUpToDate(listOf(ktFile))) changeContents("A") - assertNoLoading() - assertNoSuggestedConfiguration() - assertFalse(doAllBackgroundTasksWith {}) - scriptConfigurationManager.updater.ensureConfigurationUpToDate(listOf(ktFile)) + assertFalse(scriptConfigurationManager.updater.ensureConfigurationUpToDate(listOf(ktFile))) } fun testReportsOnAutoApply() {