Minor: changes after review
This commit is contained in:
committed by
Natalia Selezneva
parent
fc100d13dd
commit
75a23b4bc4
+16
-13
@@ -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.
|
||||
*
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+3
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user