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 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<ScriptConfigurationLoader>
get() = sequence {
yield(outsiderLoader)
yield(fileAttributeCache)
yieldAll(LOADER.getPoint(project).extensionList)
yield(defaultLoader)
}
private val loaders: List<ScriptConfigurationLoader>
get() = listOf(
ScriptOutsiderFileConfigurationLoader(project),
ScriptConfigurationFileAttributeCache(project)
) + project[LOADER] + listOf(
DefaultScriptConfigurationLoader(project)
)
private val listeners: List<ScriptChangeListener>
get() = project[DefaultScriptConfigurationManagerExtensions.LISTENER] + listOf(DefaultScriptChangeListener())
private val defaultListener = DefaultScriptChangeListener()
private val listeners: Sequence<ScriptChangeListener>
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 <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.
*
@@ -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<ScriptChangeListener>
private val listeners: Sequence<ScriptChangeListener>
) {
private val scriptsQueue = Alarm(Alarm.ThreadToUse.SWING_THREAD, project)
private val scriptChangesListenerDelay = 1400
@@ -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)
}
}
+2 -2
View File
@@ -13,8 +13,8 @@
</extensions>
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
<listener implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/>
<loader implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/>
<listener order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/>
<loader order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/>
</extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
+2 -2
View File
@@ -13,8 +13,8 @@
</extensions>
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
<listener implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/>
<loader implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/>
<listener order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptListener"/>
<loader order="first" implementation="org.jetbrains.kotlin.idea.script.GradleScriptConfigurationLoader"/>
</extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
@@ -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 = ""
}
class Template
@@ -141,5 +141,7 @@ abstract class AbstractScriptConfigurationLoadingTest : AbstractScriptConfigurat
assertAndDoAllBackgroundTasks()
assertSingleLoading()
assertAppliedConfiguration("initial")
checkHighlighting()
}
}
@@ -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 }
@@ -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() {