Minor: changes after review

This commit is contained in:
Sergey Rostov
2019-11-13 11:45:43 +03:00
committed by Natalia Selezneva
parent fc100d13dd
commit 75a23b4bc4
9 changed files with 34 additions and 32 deletions
@@ -18,6 +18,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.jetbrains.kotlin.idea.core.script.* 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.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.ScriptConfigurationFileAttributeCache
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationMemoryCache import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationMemoryCache
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationSnapshot 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) if (ApplicationManager.getApplication().isUnitTestMode) TestingBackgroundExecutor(rootsIndexer)
else DefaultBackgroundExecutor(project, rootsIndexer) else DefaultBackgroundExecutor(project, rootsIndexer)
private val outsiderLoader = ScriptOutsiderFileConfigurationLoader(project)
private val fileAttributeCache = ScriptConfigurationFileAttributeCache(project) private val fileAttributeCache = ScriptConfigurationFileAttributeCache(project)
private val defaultLoader = DefaultScriptConfigurationLoader(project)
private val loaders: Sequence<ScriptConfigurationLoader>
get() = sequence {
yield(outsiderLoader)
yield(fileAttributeCache)
yieldAll(LOADER.getPoint(project).extensionList)
yield(defaultLoader)
}
private val loaders: List<ScriptConfigurationLoader> private val defaultListener = DefaultScriptChangeListener()
get() = listOf( private val listeners: Sequence<ScriptChangeListener>
ScriptOutsiderFileConfigurationLoader(project), get() = sequence {
ScriptConfigurationFileAttributeCache(project) yieldAll(LISTENER.getPoint(project).extensionList)
) + project[LOADER] + listOf( yield(defaultListener)
DefaultScriptConfigurationLoader(project) }
)
private val listeners: List<ScriptChangeListener>
get() = project[DefaultScriptConfigurationManagerExtensions.LISTENER] + listOf(DefaultScriptChangeListener())
private val notifier = ScriptChangesNotifier(project, updater, listeners) private val notifier = ScriptChangesNotifier(project, updater, listeners)
@@ -131,9 +137,6 @@ internal class DefaultScriptConfigurationManager(project: Project) :
} }
} }
private operator fun <T> Project.get(epName: ExtensionPointName<T>): List<T> =
Extensions.getArea(this).getExtensionPoint(epName).extensionList
/** /**
* Will be called on [cache] miss to initiate loading of [file]'s script configuration. * Will be called on [cache] miss to initiate loading of [file]'s script configuration.
* *
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.scripting.definitions.isNonScript
internal class ScriptChangesNotifier( internal class ScriptChangesNotifier(
private val project: Project, private val project: Project,
private val updater: ScriptConfigurationUpdater, private val updater: ScriptConfigurationUpdater,
private val listeners: List<ScriptChangeListener> private val listeners: Sequence<ScriptChangeListener>
) { ) {
private val scriptsQueue = Alarm(Alarm.ThreadToUse.SWING_THREAD, project) private val scriptsQueue = Alarm(Alarm.ThreadToUse.SWING_THREAD, project)
private val scriptChangesListenerDelay = 1400 private val scriptChangesListenerDelay = 1400
@@ -29,11 +29,11 @@ class GradleScriptConfigurationLoader(project: Project) : DefaultScriptConfigura
override fun loadDependencies( override fun loadDependencies(
isFirstLoad: Boolean, isFirstLoad: Boolean,
virtualFile: VirtualFile, ktFile: KtFile,
scriptDefinition: ScriptDefinition, scriptDefinition: ScriptDefinition,
context: ScriptConfigurationLoadingContext context: ScriptConfigurationLoadingContext
): Boolean { ): Boolean {
if (!isGradleKotlinScript(virtualFile)) return false if (!isGradleKotlinScript(ktFile.originalFile.virtualFile)) return false
if (useProjectImport) { if (useProjectImport) {
// do nothing, project import notification will be already showed // 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)
} }
} }
+2 -2
View File
@@ -13,8 +13,8 @@
</extensions> </extensions>
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea"> <extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
<listener implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/> <listener order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/>
<loader implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/> <loader order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/>
</extensions> </extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle"> <extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
+2 -2
View File
@@ -13,8 +13,8 @@
</extensions> </extensions>
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea"> <extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
<listener implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/> <listener order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/>
<loader implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/> <loader order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/>
</extensions> </extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle"> <extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
@@ -34,9 +34,4 @@ class TestDependenciesResolver : AsyncDependenciesResolver {
@ScriptExpectedLocations([ScriptExpectedLocation.Everywhere]) @ScriptExpectedLocations([ScriptExpectedLocation.Everywhere])
@ScriptTemplateDefinition(TestDependenciesResolver::class, scriptFilePattern = "script.kts") @ScriptTemplateDefinition(TestDependenciesResolver::class, scriptFilePattern = "script.kts")
class Template : Base() class Template
open class Base {
val i = 3
val str = ""
}
@@ -141,5 +141,7 @@ abstract class AbstractScriptConfigurationLoadingTest : AbstractScriptConfigurat
assertAndDoAllBackgroundTasks() assertAndDoAllBackgroundTasks()
assertSingleLoading() assertSingleLoading()
assertAppliedConfiguration("initial") assertAppliedConfiguration("initial")
checkHighlighting()
} }
} }
@@ -271,10 +271,14 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
protected open fun loadScriptConfigurationSynchronously(script: VirtualFile) { protected open fun loadScriptConfigurationSynchronously(script: VirtualFile) {
updateScriptDependenciesSynchronously(myFile, project) updateScriptDependenciesSynchronously(myFile, project)
VfsUtil.markDirtyAndRefresh(false, true, true, project.baseDir)
// This is needed because updateScriptDependencies invalidates psiFile that was stored in myFile field // This is needed because updateScriptDependencies invalidates psiFile that was stored in myFile field
VfsUtil.markDirtyAndRefresh(false, true, true, project.baseDir)
myFile = psiManager.findFile(script) myFile = psiManager.findFile(script)
checkHighlighting()
}
protected fun checkHighlighting() {
val ktFile = myFile as KtFile val ktFile = myFile as KtFile
val reports = IdeScriptReportSink.getReports(ktFile) val reports = IdeScriptReportSink.getReports(ktFile)
val isFatalErrorPresent = reports.any { it.severity == ScriptDiagnostic.Severity.FATAL } val isFatalErrorPresent = reports.any { it.severity == ScriptDiagnostic.Severity.FATAL }
@@ -158,12 +158,10 @@ class ScriptConfigurationLoadingTest : AbstractScriptConfigurationLoadingTest()
fun testLoadingForUsagesSearch() { fun testLoadingForUsagesSearch() {
assertAndLoadInitialConfiguration() assertAndLoadInitialConfiguration()
assertTrue(scriptConfigurationManager.updater.ensureConfigurationUpToDate(listOf(ktFile)))
changeContents("A") changeContents("A")
assertNoLoading() assertFalse(scriptConfigurationManager.updater.ensureConfigurationUpToDate(listOf(ktFile)))
assertNoSuggestedConfiguration()
assertFalse(doAllBackgroundTasksWith {})
scriptConfigurationManager.updater.ensureConfigurationUpToDate(listOf(ktFile))
} }
fun testReportsOnAutoApply() { fun testReportsOnAutoApply() {