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