Make cancellation checks when building resolution anchor caches
^KT-39734
This commit is contained in:
+2
@@ -12,6 +12,7 @@ import com.intellij.util.CommonProcessors
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionAnchorCacheService
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.ModuleDependencyProviderExtension
|
||||
import org.jetbrains.kotlin.idea.project.libraryToSourceAnalysisEnabled
|
||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus.checkCanceled
|
||||
|
||||
class ResolutionAnchorModuleDependencyProviderExtension(private val project: Project) : ModuleDependencyProviderExtension {
|
||||
/**
|
||||
@@ -32,6 +33,7 @@ class ResolutionAnchorModuleDependencyProviderExtension(private val project: Pro
|
||||
val resolutionAnchorDependencies = HashSet<ModuleSourceInfo>()
|
||||
ModuleRootManager.getInstance(module).orderEntries().recursively().forEachLibrary { library ->
|
||||
getIdeaModelInfosCache(project).getLibraryInfosForLibrary(library).flatMapTo(resolutionAnchorDependencies) { libraryInfo ->
|
||||
checkCanceled()
|
||||
ResolutionAnchorCacheService.getInstance(project).getDependencyResolutionAnchors(libraryInfo)
|
||||
}
|
||||
true
|
||||
|
||||
+3
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.idea.caches.project.LibraryDependenciesCache
|
||||
import org.jetbrains.kotlin.idea.caches.project.LibraryInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfosFromIdeaModel
|
||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus.checkCanceled
|
||||
import org.jetbrains.kotlin.types.typeUtil.closure
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||
|
||||
@@ -81,6 +81,7 @@ class ResolutionAnchorCacheServiceImpl(val project: Project) :
|
||||
val allTransitiveLibraryDependencies = with(LibraryDependenciesCache.getInstance(project)) {
|
||||
val (directDependenciesOnLibraries, _) = getLibrariesAndSdksUsedWith(libraryInfo)
|
||||
directDependenciesOnLibraries.closure { libraryDependency ->
|
||||
checkCanceled()
|
||||
getLibrariesAndSdksUsedWith(libraryDependency).first
|
||||
}
|
||||
}
|
||||
@@ -90,7 +91,7 @@ class ResolutionAnchorCacheServiceImpl(val project: Project) :
|
||||
|
||||
private fun associateModulesByNames(): Map<String, ModuleInfo> {
|
||||
return getModuleInfosFromIdeaModel(project).associateBy { moduleInfo ->
|
||||
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
|
||||
checkCanceled()
|
||||
when (moduleInfo) {
|
||||
is LibraryInfo -> moduleInfo.library.name ?: "" // TODO: when does library have no name?
|
||||
is ModuleSourceInfo -> moduleInfo.module.name
|
||||
|
||||
Reference in New Issue
Block a user