Scripting: pass KtFile to ScriptConfigurationLoader
This commit is contained in:
+3
-3
@@ -175,11 +175,11 @@ internal class DefaultScriptConfigurationManager(project: Project) :
|
||||
|
||||
val (async, sync) = loaders.partition { it.shouldRunInBackground(scriptDefinition) }
|
||||
|
||||
val syncLoader = sync.firstOrNull { it.loadDependencies(isFirstLoad, virtualFile, scriptDefinition, loadingContext) }
|
||||
val syncLoader = sync.firstOrNull { it.loadDependencies(isFirstLoad, file, scriptDefinition, loadingContext) }
|
||||
if (syncLoader == null) {
|
||||
// run async loader
|
||||
if (forceSync) {
|
||||
async.first { it.loadDependencies(isFirstLoad, virtualFile, scriptDefinition, loadingContext) }
|
||||
async.first { it.loadDependencies(isFirstLoad, file, scriptDefinition, loadingContext) }
|
||||
} else {
|
||||
backgroundExecutor.ensureScheduled(virtualFile) {
|
||||
val cached = getCachedConfigurationState(virtualFile)
|
||||
@@ -192,7 +192,7 @@ internal class DefaultScriptConfigurationManager(project: Project) :
|
||||
// don't start loading if nothing was changed
|
||||
// (in case we checking for up-to-date and loading concurrently)
|
||||
val actualIsFirstLoad = cached == null
|
||||
async.first { it.loadDependencies(actualIsFirstLoad, virtualFile, scriptDefinition, loadingContext) }
|
||||
async.first { it.loadDependencies(actualIsFirstLoad, file, scriptDefinition, loadingContext) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptConfigur
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.getKtFile
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.core.util.*
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource
|
||||
@@ -30,12 +31,13 @@ internal class ScriptConfigurationFileAttributeCache(
|
||||
*/
|
||||
override fun loadDependencies(
|
||||
isFirstLoad: Boolean,
|
||||
virtualFile: VirtualFile,
|
||||
ktFile: KtFile,
|
||||
scriptDefinition: ScriptDefinition,
|
||||
context: ScriptConfigurationLoadingContext
|
||||
): Boolean {
|
||||
if (!isFirstLoad) return false
|
||||
|
||||
val virtualFile = ktFile.originalFile.virtualFile
|
||||
val fromFs = load(virtualFile) ?: return false
|
||||
val result =
|
||||
ScriptConfigurationSnapshot(
|
||||
|
||||
@@ -58,11 +58,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
|
||||
@@ -78,7 +78,7 @@ class GradleScriptConfigurationLoader(project: Project) : DefaultScriptConfigura
|
||||
}
|
||||
}
|
||||
|
||||
return super.loadDependencies(isFirstLoad, virtualFile, scriptDefinition, context)
|
||||
return super.loadDependencies(isFirstLoad, ktFile, scriptDefinition, context)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-7
@@ -10,7 +10,6 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.CachedConfigurationInputs
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationSnapshot
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.getKtFile
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||
@@ -33,18 +32,18 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig
|
||||
|
||||
override fun loadDependencies(
|
||||
isFirstLoad: Boolean,
|
||||
virtualFile: VirtualFile,
|
||||
ktFile: KtFile,
|
||||
scriptDefinition: ScriptDefinition,
|
||||
context: ScriptConfigurationLoadingContext
|
||||
): Boolean {
|
||||
val file = project.getKtFile(virtualFile) ?: return false
|
||||
val virtualFile = ktFile.originalFile.virtualFile
|
||||
|
||||
debug(file) { "start dependencies loading" }
|
||||
debug(ktFile) { "start dependencies loading" }
|
||||
|
||||
val inputs = getInputsStamp(virtualFile, file)
|
||||
val inputs = getInputsStamp(virtualFile, ktFile)
|
||||
val scriptingApiResult = try {
|
||||
refineScriptCompilationConfiguration(
|
||||
KtFileScriptSource(file), scriptDefinition, file.project
|
||||
KtFileScriptSource(ktFile), scriptDefinition, ktFile.project
|
||||
)
|
||||
} catch (e: Throwable) {
|
||||
if (e is ControlFlowException) throw e
|
||||
@@ -60,7 +59,7 @@ open class DefaultScriptConfigurationLoader(val project: Project) : ScriptConfig
|
||||
|
||||
context.suggestNewConfiguration(virtualFile, result)
|
||||
|
||||
debug(file) { "finish dependencies loading" }
|
||||
debug(ktFile) { "finish dependencies loading" }
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.loader
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
|
||||
/**
|
||||
@@ -23,7 +23,7 @@ internal interface ScriptConfigurationLoader {
|
||||
*/
|
||||
fun loadDependencies(
|
||||
isFirstLoad: Boolean,
|
||||
virtualFile: VirtualFile,
|
||||
ktFile: KtFile,
|
||||
scriptDefinition: ScriptDefinition,
|
||||
context: ScriptConfigurationLoadingContext
|
||||
): Boolean
|
||||
|
||||
+3
-2
@@ -6,21 +6,22 @@
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.loader
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationSnapshot
|
||||
import org.jetbrains.kotlin.idea.highlighter.OutsidersPsiFileSupportUtils
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
|
||||
internal class ScriptOutsiderFileConfigurationLoader(val project: Project) :
|
||||
ScriptConfigurationLoader {
|
||||
override fun loadDependencies(
|
||||
isFirstLoad: Boolean,
|
||||
virtualFile: VirtualFile,
|
||||
ktFile: KtFile,
|
||||
scriptDefinition: ScriptDefinition,
|
||||
context: ScriptConfigurationLoadingContext
|
||||
): Boolean {
|
||||
if (!isFirstLoad) return false
|
||||
|
||||
val virtualFile = ktFile.originalFile.virtualFile
|
||||
val fileOrigin = OutsidersPsiFileSupportUtils.getOutsiderFileOrigin(
|
||||
project,
|
||||
virtualFile
|
||||
|
||||
Reference in New Issue
Block a user