[analyzer] project model wip

GitOrigin-RevId: f6eebddf9097c63bf7b9cf95a7db8cd8b7d26919
This commit is contained in:
Andrey Zaytsev
2025-03-04 03:42:29 +00:00
committed by intellij-monorepo-bot
parent 93ef9a7aa5
commit 7c1bcfdd4d
@@ -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<VersionedStorageChange>(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)
}
}
}
}