[LL API] Refactor session caches

Use 'CachedValue' and dependency handling with 'ModificationTracker'
for dependent session invalidation.
This commit is contained in:
Yan Zhulanow
2023-03-10 16:18:32 +09:00
committed by Space Team
parent c3b2d9dc5b
commit 5c9a9913db
31 changed files with 372 additions and 622 deletions
@@ -6,21 +6,21 @@
package org.jetbrains.kotlin.analysis.api.standalone;
import com.intellij.mock.MockProject;
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents;
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService;
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory;
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache;
@SuppressWarnings("KotlinInternalInJava")
class RegisterComponentService {
static void registerLLFirLibrarySessionFactory(MockProject project) {
project.registerService(
LLFirLibrarySessionFactory.class,
new LLFirLibrarySessionFactory(project)
);
static void registerLLFirSessionCache(MockProject project) {
project.registerService(LLFirSessionCache.class, new LLFirSessionCache(project));
}
static void registerLLFirGlobalResolveComponents(MockProject project) {
project.registerService(LLFirGlobalResolveComponents.class, new LLFirGlobalResolveComponents(project));
}
static void registerLLFirResolveSessionService(MockProject project) {
project.registerService(
LLFirResolveSessionService.class,
new LLFirResolveSessionService(project)
);
project.registerService(LLFirResolveSessionService.class, new LLFirResolveSessionService(project));
}
}
@@ -142,7 +142,8 @@ public class StandaloneAnalysisAPISessionBuilder(
}
)
registerService(LLFirBuiltinsSessionFactory::class.java, LLFirBuiltinsSessionFactory(this))
RegisterComponentService.registerLLFirLibrarySessionFactory(this)
RegisterComponentService.registerLLFirSessionCache(this)
RegisterComponentService.registerLLFirGlobalResolveComponents(this)
registerService(KotlinReferenceProvidersService::class.java, HLApiReferenceProviderService::class.java)
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)