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 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.
|
||||||
*
|
*
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
|
|||||||
+3
-3
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user