Rewrite scripting related API to PsiFile instead of VirtualFile
There were several places where we converted virtualFile to PsiFile. This operation need a read access and may throw ProcessCanceledException, so we want to minimize its usages in IDE
This commit is contained in:
+1
-1
@@ -90,7 +90,7 @@ sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, Bina
|
||||
) : ScriptDependenciesInfo(project) {
|
||||
override val sdk: Sdk?
|
||||
get() {
|
||||
return ScriptDependenciesManager.getInstance(project).getScriptSdk(scriptFile, project)
|
||||
return ScriptDependenciesManager.getInstance(project).getScriptSdk(scriptFile)
|
||||
}
|
||||
|
||||
override fun contentScope(): GlobalSearchScope {
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ object KotlinHighlightingUtil {
|
||||
private fun shouldHighlightScript(ktFile: KtFile): Boolean {
|
||||
if (isRunningInCidrIde) return false // There is no Java support in CIDR. So do not highlight errors in KTS if running in CIDR.
|
||||
if (!ScriptsCompilationConfigurationUpdater.areDependenciesCached(ktFile)) return false
|
||||
if (IdeScriptReportSink.getReports(ktFile.virtualFile).any { it.severity == ScriptDiagnostic.Severity.FATAL }) {
|
||||
if (IdeScriptReportSink.getReports(ktFile).any { it.severity == ScriptDiagnostic.Severity.FATAL }) {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ class ScriptExternalHighlightingPass(
|
||||
|
||||
if (!file.isScript()) return
|
||||
|
||||
val reports = IdeScriptReportSink.getReports(file.virtualFile)
|
||||
val reports = IdeScriptReportSink.getReports(file)
|
||||
|
||||
val annotations = reports.mapNotNull { scriptDiagnostic ->
|
||||
val (startOffset, endOffset) = scriptDiagnostic.location?.let { computeOffsets(document, it) } ?: 0 to 0
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.impl.cache.impl.id.IdIndex
|
||||
import com.intellij.psi.impl.cache.impl.id.IdIndexEntry
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
@@ -123,7 +124,7 @@ fun PsiSearchHelper.isCheapEnoughToSearchConsideringOperators(
|
||||
return isCheapEnoughToSearch(name, scope, fileToIgnoreOccurrencesIn, progress)
|
||||
}
|
||||
|
||||
fun findScriptsWithUsages(declaration: KtNamedDeclaration): List<VirtualFile> {
|
||||
fun findScriptsWithUsages(declaration: KtNamedDeclaration): List<KtFile> {
|
||||
val project = declaration.project
|
||||
val scope = PsiSearchHelper.getInstance(project).getUseScope(declaration) as? GlobalSearchScope
|
||||
?: return emptyList()
|
||||
@@ -138,5 +139,8 @@ fun findScriptsWithUsages(declaration: KtNamedDeclaration): List<VirtualFile> {
|
||||
scope
|
||||
)
|
||||
}
|
||||
return collector.results.filter { it.findScriptDefinition(project) != null }.toList()
|
||||
return collector.results
|
||||
.mapNotNull { PsiManager.getInstance(project).findFile(it) as? KtFile }
|
||||
.filter { it.findScriptDefinition() != null }
|
||||
.toList()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user