Misc: Eliminate instances of IdeModifiableModelsProviderImpl or dispose them after use
This commit is contained in:
@@ -5,10 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.caches.project
|
||||
|
||||
import com.intellij.facet.FacetManager
|
||||
import com.intellij.facet.FacetTypeRegistry
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModelsProviderImpl
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.module.impl.scopes.LibraryScopeBase
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -121,21 +121,20 @@ private fun ideaModelDependencies(
|
||||
return result.filterNot { it is LibraryInfo && it.platform != platform }
|
||||
}
|
||||
|
||||
fun Module.findImplementedModuleNames(modelsProvider: IdeModifiableModelsProvider): List<String> {
|
||||
val facetModel = modelsProvider.getModifiableFacetModel(this)
|
||||
val facet = facetModel.findFacet(
|
||||
KotlinFacetType.TYPE_ID,
|
||||
FacetTypeRegistry.getInstance().findFacetType(ID)!!.defaultFacetName
|
||||
fun Module.findImplementedModuleNames(): List<String> {
|
||||
val facet = FacetManager.getInstance(this).findFacet(
|
||||
KotlinFacetType.TYPE_ID,
|
||||
FacetTypeRegistry.getInstance().findFacetType(ID)!!.defaultFacetName
|
||||
)
|
||||
return facet?.configuration?.settings?.implementedModuleNames ?: emptyList()
|
||||
}
|
||||
|
||||
fun Module.findImplementedModules() = this.cached<List<Module>>(
|
||||
CachedValueProvider {
|
||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||
val modelsProvider = IdeModelsProviderImpl(project)
|
||||
CachedValueProvider.Result(
|
||||
findImplementedModuleNames(modelsProvider).mapNotNull { modelsProvider.findIdeModule(it) },
|
||||
ProjectRootModificationTracker.getInstance(project)
|
||||
findImplementedModuleNames().mapNotNull { modelsProvider.findIdeModule(it) },
|
||||
ProjectRootModificationTracker.getInstance(project)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
+7
-11
@@ -5,23 +5,22 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.caches.project
|
||||
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.module.ModuleManager
|
||||
import com.intellij.openapi.roots.ProjectRootModificationTracker
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
|
||||
fun Module.findImplementingModules(modelsProvider: IdeModifiableModelsProvider) =
|
||||
modelsProvider.modules.filter { name in it.findImplementedModuleNames(modelsProvider) }
|
||||
fun Module.findImplementingModules() =
|
||||
ModuleManager.getInstance(project).modules.filter { name in it.findImplementedModuleNames() }
|
||||
|
||||
val Module.implementingModules: List<Module>
|
||||
get() = cached(CachedValueProvider {
|
||||
CachedValueProvider.Result(
|
||||
findImplementingModules(IdeModifiableModelsProviderImpl(project)),
|
||||
ProjectRootModificationTracker.getInstance(project)
|
||||
findImplementingModules(),
|
||||
ProjectRootModificationTracker.getInstance(project)
|
||||
)
|
||||
})
|
||||
|
||||
@@ -32,11 +31,8 @@ private fun Module.getModuleInfo(baseModuleSourceInfo: ModuleSourceInfo): Module
|
||||
else -> null
|
||||
}
|
||||
|
||||
private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo): List<ModuleSourceInfo> {
|
||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||
val implementingModules = findImplementingModules(modelsProvider)
|
||||
return implementingModules.mapNotNull { it.getModuleInfo(moduleSourceInfo) }
|
||||
}
|
||||
private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo) =
|
||||
findImplementingModules().mapNotNull { it.getModuleInfo(moduleSourceInfo) }
|
||||
|
||||
val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
||||
get() {
|
||||
|
||||
Reference in New Issue
Block a user