From 7c1bcfdd4d30e94a2a304b71ff2b4d50be5f6484 Mon Sep 17 00:00:00 2001 From: Andrey Zaytsev Date: Thu, 20 Feb 2025 15:10:55 +0100 Subject: [PATCH] [analyzer] project model wip GitOrigin-RevId: f6eebddf9097c63bf7b9cf95a7db8cd8b7d26919 --- .../ide/impl/WorkspaceModelImpl.kt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt index c45ae565162e..2551acf02d23 100644 --- a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt +++ b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt @@ -44,7 +44,10 @@ import java.util.concurrent.atomic.AtomicLong import kotlin.system.measureTimeMillis @ApiStatus.Internal -open class WorkspaceModelImpl(private val project: Project, private val cs: CoroutineScope) : WorkspaceModelInternal { +open class WorkspaceModelImpl : WorkspaceModelInternal { + val project: Project + val cs: CoroutineScope + @Volatile var loadedFromCache: Boolean = false protected set @@ -66,7 +69,7 @@ open class WorkspaceModelImpl(private val project: Project, private val cs: Coro */ private val updatesFlow = MutableSharedFlow(replay = 1) - private val virtualFileManager: VirtualFileUrlManager = IdeVirtualFileUrlManagerImpl(project.isCaseSensitive) + private val virtualFileManager: VirtualFileUrlManager override val currentSnapshot: ImmutableEntityStorage get() = entityStorage.current @@ -79,8 +82,19 @@ open class WorkspaceModelImpl(private val project: Project, private val cs: Coro private val updateModelMethodName = WorkspaceModelImpl::updateProjectModel.name private val updateModelSilentMethodName = WorkspaceModelImpl::updateProjectModelSilent.name private val onChangedMethodName = WorkspaceModelImpl::onChanged.name + + constructor(project: Project, cs: CoroutineScope, storage: ImmutableEntityStorage) { + this.project = project + this.cs = cs + this.virtualFileManager = IdeVirtualFileUrlManagerImpl(project.isCaseSensitive) + entityStorage = VersionedEntityStorageImpl(storage) + unloadedEntitiesStorage = VersionedEntityStorageImpl(ImmutableEntityStorage.empty()) + } - init { + constructor(project: Project, cs: CoroutineScope) { + this.project = project + this.cs = cs + this.virtualFileManager = IdeVirtualFileUrlManagerImpl(project.isCaseSensitive) log.debug { "Loading workspace model" } val start = Milliseconds.now() @@ -574,4 +588,4 @@ open class WorkspaceModelImpl(private val project: Project, private val cs: Coro setupOpenTelemetryReporting(workspaceModelMetrics.meter) } } -} +} \ No newline at end of file