Use ProjectRootUtil.isInContent instead of checking script expected location manually
This commit is contained in:
+1
-4
@@ -20,12 +20,10 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.idea.caches.project.NotUnderContentRootModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.NotUnderContentRootModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink
|
import org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
|
||||||
import org.jetbrains.kotlin.idea.core.script.scriptDependencies
|
import org.jetbrains.kotlin.idea.core.script.scriptDependencies
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.psi.KtCodeFragment
|
import org.jetbrains.kotlin.psi.KtCodeFragment
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.script.findScriptDefinition
|
|
||||||
import kotlin.script.experimental.dependencies.ScriptReport
|
import kotlin.script.experimental.dependencies.ScriptReport
|
||||||
|
|
||||||
object KotlinHighlightingUtil {
|
object KotlinHighlightingUtil {
|
||||||
@@ -67,7 +65,6 @@ object KotlinHighlightingUtil {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
val scriptDefinition = findScriptDefinition(ktFile) ?: return false
|
return ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true)
|
||||||
return ScriptDefinitionsManager.getInstance(ktFile.project).isInExpectedLocation(ktFile, scriptDefinition)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.idea.core.script
|
package org.jetbrains.kotlin.idea.core.script
|
||||||
|
|
||||||
import com.intellij.execution.console.IdeConsoleRootType
|
import com.intellij.execution.console.IdeConsoleRootType
|
||||||
import com.intellij.ide.projectView.impl.ProjectRootsUtil.isInTestSource
|
|
||||||
import com.intellij.ide.scratch.ScratchFileService
|
import com.intellij.ide.scratch.ScratchFileService
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.application.runWriteAction
|
import com.intellij.openapi.application.runWriteAction
|
||||||
@@ -36,8 +35,6 @@ import com.intellij.openapi.vfs.VirtualFile
|
|||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.caches.project.SdkInfo
|
import org.jetbrains.kotlin.idea.caches.project.SdkInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil.isInContent
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.script.*
|
import org.jetbrains.kotlin.script.*
|
||||||
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPI
|
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPI
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
@@ -58,7 +55,6 @@ import kotlin.script.experimental.host.createCompilationConfigurationFromTemplat
|
|||||||
import kotlin.script.experimental.jvm.JvmDependency
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
||||||
import kotlin.script.experimental.jvm.util.scriptCompilationClasspathFromContextOrStlib
|
import kotlin.script.experimental.jvm.util.scriptCompilationClasspathFromContextOrStlib
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocation
|
|
||||||
import kotlin.script.templates.standard.ScriptTemplateWithArgs
|
import kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||||
|
|
||||||
class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinitionProvider() {
|
class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinitionProvider() {
|
||||||
@@ -111,26 +107,6 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
|
|||||||
return StandardIdeScriptDefinition(project)
|
return StandardIdeScriptDefinition(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
fun isInExpectedLocation(ktFile: KtFile, scriptDefinition: KotlinScriptDefinition): Boolean {
|
|
||||||
if (ScratchFileService.isInScratchRoot(ktFile.virtualFile)) return true
|
|
||||||
|
|
||||||
val scriptScope = scriptDefinition.scriptExpectedLocations
|
|
||||||
return when {
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.Everywhere) -> true
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.Project)
|
|
||||||
&& ProjectRootManager.getInstance(ktFile.project).fileIndex.isInContent(ktFile.virtualFile) -> true
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.TestsOnly) && isInTestSource(ktFile) -> true
|
|
||||||
else -> return isInContent(
|
|
||||||
ktFile,
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.SourcesOnly),
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.Libraries),
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.Libraries),
|
|
||||||
scriptScope.contains(ScriptExpectedLocation.Libraries)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateDefinitions() {
|
private fun updateDefinitions() {
|
||||||
assert(lock.isWriteLocked) { "updateDefinitions should only be called under the write lock" }
|
assert(lock.isWriteLocked) { "updateDefinitions should only be called under the write lock" }
|
||||||
definitions = definitionsByContributor.values.flattenTo(mutableListOf()).asSequence()
|
definitions = definitionsByContributor.values.flattenTo(mutableListOf()).asSequence()
|
||||||
|
|||||||
+3
-2
@@ -34,6 +34,7 @@ import org.jetbrains.annotations.TestOnly
|
|||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.core.script.dependencies.FromFileAttributeScriptDependenciesLoader
|
import org.jetbrains.kotlin.idea.core.script.dependencies.FromFileAttributeScriptDependenciesLoader
|
||||||
import org.jetbrains.kotlin.idea.core.script.dependencies.ScriptDependenciesLoader
|
import org.jetbrains.kotlin.idea.core.script.dependencies.ScriptDependenciesLoader
|
||||||
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
||||||
import org.jetbrains.kotlin.script.findScriptDefinition
|
import org.jetbrains.kotlin.script.findScriptDefinition
|
||||||
@@ -79,7 +80,7 @@ class ScriptDependenciesUpdater(
|
|||||||
|
|
||||||
val scriptDef = findScriptDefinition(ktFile) ?: return
|
val scriptDef = findScriptDefinition(ktFile) ?: return
|
||||||
|
|
||||||
if (!ScriptDefinitionsManager.getInstance(project).isInExpectedLocation(ktFile, scriptDef)) return
|
if (!ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true)) return
|
||||||
ScriptDependenciesLoader.updateDependencies(file, scriptDef, project, shouldNotifyRootsChanged = true)
|
ScriptDependenciesLoader.updateDependencies(file, scriptDef, project, shouldNotifyRootsChanged = true)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -105,7 +106,7 @@ class ScriptDependenciesUpdater(
|
|||||||
val ktFile = PsiManager.getInstance(project).findFile(file) as? KtFile ?: return
|
val ktFile = PsiManager.getInstance(project).findFile(file) as? KtFile ?: return
|
||||||
val scriptDef = findScriptDefinition(ktFile) ?: return
|
val scriptDef = findScriptDefinition(ktFile) ?: return
|
||||||
|
|
||||||
if (!ScriptDefinitionsManager.getInstance(project).isInExpectedLocation(ktFile, scriptDef)) return
|
if (!ProjectRootsUtil.isInProjectSource(ktFile, includeScriptsOutsideSourceRoots = true)) return
|
||||||
|
|
||||||
scriptsQueue.cancelAllRequests()
|
scriptsQueue.cancelAllRequests()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user