Minor: move files
This commit is contained in:
@@ -28,6 +28,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.util.io.URLUtil
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.caches.project.getAllProjectSdks
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptConfigurationManagerImpl
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
|
||||
|
||||
+14
-3
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration
|
||||
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
@@ -19,8 +19,18 @@ import com.intellij.ui.EditorNotifications
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.core.script.*
|
||||
import org.jetbrains.kotlin.idea.core.script.LOG
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager.Companion.toVfsRoots
|
||||
import org.jetbrains.kotlin.idea.core.script.dependencies.*
|
||||
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.listener.ScriptsListener
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.loader.FromRefinedConfigurationLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.loader.OutsiderFileDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.BackgroundLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.utils.ScriptClassRootsManager
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||
import org.jetbrains.kotlin.idea.core.util.EDT
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -33,7 +43,8 @@ import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
|
||||
import kotlin.script.experimental.api.ScriptDiagnostic
|
||||
import kotlin.script.experimental.api.valueOrNull
|
||||
|
||||
class ScriptConfigurationManagerImpl internal constructor(private val project: Project) : ScriptConfigurationManager {
|
||||
class ScriptConfigurationManagerImpl internal constructor(private val project: Project) :
|
||||
ScriptConfigurationManager {
|
||||
private val rootsManager = ScriptClassRootsManager(project)
|
||||
|
||||
private val memoryCache = ScriptConfigurationMemoryCache(project)
|
||||
+4
-2
@@ -3,9 +3,10 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.cache
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.core.util.*
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -20,7 +21,8 @@ import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
||||
import kotlin.script.experimental.api.asSuccess
|
||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||
|
||||
class ScriptConfigurationFileAttributeCache : ScriptDependenciesLoader {
|
||||
class ScriptConfigurationFileAttributeCache :
|
||||
ScriptDependenciesLoader {
|
||||
operator fun contains(file: VirtualFile): Boolean =
|
||||
file.scriptDependencies != null || file.scriptCompilationConfiguration != null
|
||||
|
||||
+47
-16
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.cache
|
||||
|
||||
import com.intellij.ProjectTopics
|
||||
import com.intellij.openapi.extensions.Extensions
|
||||
@@ -23,7 +23,11 @@ import com.intellij.psi.search.NonClasspathDirectoriesScope
|
||||
import com.intellij.util.containers.ConcurrentFactoryMap
|
||||
import com.intellij.util.containers.SLRUMap
|
||||
import org.jetbrains.kotlin.idea.caches.project.getAllProjectSdks
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationMemoryCache.Companion.MAX_SCRIPTS_CACHED
|
||||
import org.jetbrains.kotlin.idea.core.script.KotlinScriptDependenciesClassFinder
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationMemoryCache.Companion.MAX_SCRIPTS_CACHED
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
|
||||
@@ -51,8 +55,10 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
|
||||
private val cacheLock = ReentrantReadWriteLock()
|
||||
|
||||
private val scriptDependenciesCache = SLRUCacheWithLock<VirtualFile, ScriptCompilationConfigurationWrapper>()
|
||||
private val scriptsModificationStampsCache = SLRUCacheWithLock<VirtualFile, Long>()
|
||||
private val scriptDependenciesCache =
|
||||
SLRUCacheWithLock<VirtualFile, ScriptCompilationConfigurationWrapper>()
|
||||
private val scriptsModificationStampsCache =
|
||||
SLRUCacheWithLock<VirtualFile, Long>()
|
||||
|
||||
fun getCachedConfiguration(file: VirtualFile): ScriptCompilationConfigurationWrapper? = scriptDependenciesCache.get(file)
|
||||
|
||||
@@ -78,7 +84,11 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
|
||||
@Suppress("FoldInitializerAndIfToElvis")
|
||||
if (sdk == null) {
|
||||
return@createWeakMap NonClasspathDirectoriesScope.compose(ScriptConfigurationManager.toVfsRoots(roots))
|
||||
return@createWeakMap NonClasspathDirectoriesScope.compose(
|
||||
ScriptConfigurationManager.toVfsRoots(
|
||||
roots
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
return@createWeakMap NonClasspathDirectoriesScope.compose(
|
||||
@@ -90,7 +100,9 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
val scriptsSdksCache: MutableMap<VirtualFile, Sdk?> =
|
||||
ConcurrentFactoryMap.createWeakMap { file ->
|
||||
val compilationConfiguration = getConfiguration(file)
|
||||
return@createWeakMap getScriptSdk(compilationConfiguration) ?: ScriptConfigurationManager.getScriptDefaultSdk(project)
|
||||
return@createWeakMap getScriptSdk(compilationConfiguration) ?: ScriptConfigurationManager.getScriptDefaultSdk(
|
||||
project
|
||||
)
|
||||
}
|
||||
|
||||
private fun getConfiguration(file: VirtualFile): ScriptCompilationConfigurationWrapper? {
|
||||
@@ -99,7 +111,8 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
if (configuration != null) return configuration
|
||||
|
||||
val ktFile = runReadAction { PsiManager.getInstance(project).findFile(file) as? KtFile } ?: return null
|
||||
return ScriptConfigurationManager.getInstance(project).getConfiguration(ktFile)
|
||||
return ScriptConfigurationManager.getInstance(project)
|
||||
.getConfiguration(ktFile)
|
||||
}
|
||||
|
||||
private fun getScriptSdk(compilationConfiguration: ScriptCompilationConfigurationWrapper?): Sdk? {
|
||||
@@ -125,21 +138,27 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
.distinct()
|
||||
}
|
||||
|
||||
private val allNonIndexedSdks by ClearableLazyValue(cacheLock) {
|
||||
private val allNonIndexedSdks by ClearableLazyValue(
|
||||
cacheLock
|
||||
) {
|
||||
scriptDependenciesCache.getAll()
|
||||
.mapNotNull { scriptsSdksCache[it.key] }
|
||||
.filterNonModuleSdk()
|
||||
.distinct()
|
||||
}
|
||||
|
||||
val allDependenciesClassFiles by ClearableLazyValue(cacheLock) {
|
||||
val allDependenciesClassFiles by ClearableLazyValue(
|
||||
cacheLock
|
||||
) {
|
||||
val sdkFiles = allNonIndexedSdks
|
||||
.flatMap { it.rootProvider.getFiles(OrderRootType.CLASSES).toList() }
|
||||
|
||||
val scriptDependenciesClasspath = scriptDependenciesCache.getAll()
|
||||
.flatMap { it.value.dependenciesClassPath }.distinct()
|
||||
|
||||
sdkFiles + ScriptConfigurationManager.toVfsRoots(scriptDependenciesClasspath)
|
||||
sdkFiles + ScriptConfigurationManager.toVfsRoots(
|
||||
scriptDependenciesClasspath
|
||||
)
|
||||
}
|
||||
|
||||
val allDependenciesSources by ClearableLazyValue(cacheLock) {
|
||||
@@ -148,14 +167,20 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
|
||||
val scriptDependenciesSources = scriptDependenciesCache.getAll()
|
||||
.flatMap { it.value.dependenciesSources }.distinct()
|
||||
sdkSources + ScriptConfigurationManager.toVfsRoots(scriptDependenciesSources)
|
||||
sdkSources + ScriptConfigurationManager.toVfsRoots(
|
||||
scriptDependenciesSources
|
||||
)
|
||||
}
|
||||
|
||||
val allDependenciesClassFilesScope by ClearableLazyValue(cacheLock) {
|
||||
val allDependenciesClassFilesScope by ClearableLazyValue(
|
||||
cacheLock
|
||||
) {
|
||||
NonClasspathDirectoriesScope.compose(allDependenciesClassFiles)
|
||||
}
|
||||
|
||||
val allDependenciesSourcesScope by ClearableLazyValue(cacheLock) {
|
||||
val allDependenciesSourcesScope by ClearableLazyValue(
|
||||
cacheLock
|
||||
) {
|
||||
NonClasspathDirectoriesScope.compose(allDependenciesSources)
|
||||
}
|
||||
|
||||
@@ -201,14 +226,18 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
}
|
||||
|
||||
fun hasNotCachedRoots(compilationConfiguration: ScriptCompilationConfigurationWrapper): Boolean {
|
||||
val scriptSdk = getScriptSdk(compilationConfiguration) ?: ScriptConfigurationManager.getScriptDefaultSdk(project)
|
||||
val scriptSdk = getScriptSdk(compilationConfiguration) ?: ScriptConfigurationManager.getScriptDefaultSdk(
|
||||
project
|
||||
)
|
||||
val wasSdkChanged = scriptSdk != null && !allSdks.contains(scriptSdk)
|
||||
if (wasSdkChanged) {
|
||||
debug { "sdk was changed: $compilationConfiguration" }
|
||||
return true
|
||||
}
|
||||
|
||||
val newClassRoots = ScriptConfigurationManager.toVfsRoots(compilationConfiguration.dependenciesClassPath)
|
||||
val newClassRoots = ScriptConfigurationManager.toVfsRoots(
|
||||
compilationConfiguration.dependenciesClassPath
|
||||
)
|
||||
for (newClassRoot in newClassRoots) {
|
||||
if (!allDependenciesClassFiles.contains(newClassRoot)) {
|
||||
debug { "class root was changed: $newClassRoot" }
|
||||
@@ -216,7 +245,9 @@ class ScriptConfigurationMemoryCache internal constructor(private val project: P
|
||||
}
|
||||
}
|
||||
|
||||
val newSourceRoots = ScriptConfigurationManager.toVfsRoots(compilationConfiguration.dependenciesSources)
|
||||
val newSourceRoots = ScriptConfigurationManager.toVfsRoots(
|
||||
compilationConfiguration.dependenciesSources
|
||||
)
|
||||
for (newSourceRoot in newSourceRoots) {
|
||||
if (!allDependenciesSources.contains(newSourceRoot)) {
|
||||
debug { "source root was changed: $newSourceRoot" }
|
||||
+3
-1
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.listener
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.editor.EditorFactory
|
||||
@@ -17,6 +17,8 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.util.Alarm
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptConfigurationManagerImpl
|
||||
import org.jetbrains.kotlin.idea.core.script.isScriptDependenciesUpdaterDisabled
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.isNonScript
|
||||
+3
-2
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.loader
|
||||
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -15,7 +15,8 @@ import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResu
|
||||
import org.jetbrains.kotlin.scripting.resolve.refineScriptCompilationConfiguration
|
||||
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
|
||||
|
||||
class FromRefinedConfigurationLoader internal constructor() : ScriptDependenciesLoader {
|
||||
class FromRefinedConfigurationLoader internal constructor() :
|
||||
ScriptDependenciesLoader {
|
||||
override fun isAsync(file: KtFile, scriptDefinition: ScriptDefinition): Boolean {
|
||||
return scriptDefinition.asLegacyOrNull<KotlinScriptDefinition>()?.dependencyResolver?.let {
|
||||
it is AsyncDependenciesResolver || it is LegacyResolverWrapper
|
||||
+6
-5
@@ -1,19 +1,20 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.loader
|
||||
|
||||
import com.intellij.psi.PsiManager
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManagerImpl
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.ScriptConfigurationManagerImpl
|
||||
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.resolve.ScriptCompilationConfigurationResult
|
||||
import kotlin.script.experimental.api.asSuccess
|
||||
|
||||
class OutsiderFileDependenciesLoader(private val manager: ScriptConfigurationManagerImpl) : ScriptDependenciesLoader {
|
||||
class OutsiderFileDependenciesLoader(private val manager: ScriptConfigurationManagerImpl) :
|
||||
ScriptDependenciesLoader {
|
||||
override val skipSaveToAttributes: Boolean
|
||||
get() = true
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.loader
|
||||
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
+1
-2
@@ -3,13 +3,12 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.utils
|
||||
|
||||
import com.intellij.openapi.progress.EmptyProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.progress.util.BackgroundTaskUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptClassRootsManager
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
+6
-2
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.utils
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.TransactionGuard
|
||||
@@ -11,6 +11,9 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.ex.ProjectRootManagerEx
|
||||
import com.intellij.openapi.util.EmptyRunnable
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker
|
||||
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationMemoryCache
|
||||
import org.jetbrains.kotlin.idea.core.script.debug
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
@@ -74,7 +77,8 @@ internal class ScriptClassRootsManager(val project: Project) {
|
||||
debug { "roots change event" }
|
||||
|
||||
ProjectRootManagerEx.getInstanceEx(project)?.makeRootsChange(EmptyRunnable.getInstance(), false, true)
|
||||
ScriptDependenciesModificationTracker.getInstance(project).incModificationCount()
|
||||
ScriptDependenciesModificationTracker.getInstance(project)
|
||||
.incModificationCount()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptDependenciesProvider"/>
|
||||
|
||||
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManagerImpl"/>
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.configuration.ScriptConfigurationManagerImpl"/>
|
||||
|
||||
<projectService serviceInterface="org.jetbrains.kotlin.scripting.resolve.ScriptReportSink"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink"/>
|
||||
|
||||
Reference in New Issue
Block a user