Made incremental cache per-module.
Reused IDEA framework which manages per-module storage.
This commit is contained in:
+6
-2
@@ -25,6 +25,7 @@ import com.intellij.psi.search.GlobalSearchScope;
|
||||
import kotlin.Function1;
|
||||
import kotlin.KotlinPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
||||
import org.jetbrains.jet.context.ContextPackage;
|
||||
@@ -43,6 +44,7 @@ import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalCache;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalPackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalCacheProvider;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactoryService;
|
||||
@@ -149,7 +151,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
ModuleDescriptorImpl module,
|
||||
List<String> moduleIds,
|
||||
IncrementalCache incrementalCache
|
||||
@Nullable IncrementalCacheProvider incrementalCacheProvider
|
||||
) {
|
||||
GlobalContext globalContext = ContextPackage.GlobalContext();
|
||||
TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters.create(
|
||||
@@ -164,8 +166,10 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
try {
|
||||
List<PackageFragmentProvider> additionalProviders = new ArrayList<PackageFragmentProvider>();
|
||||
|
||||
if (incrementalCache != null && moduleIds != null) {
|
||||
if (moduleIds != null && incrementalCacheProvider != null) {
|
||||
for (String moduleId : moduleIds) {
|
||||
IncrementalCache incrementalCache = incrementalCacheProvider.getIncrementalCache(moduleId);
|
||||
|
||||
additionalProviders.add(
|
||||
new IncrementalPackageFragmentProvider(
|
||||
files, module, globalContext.getStorageManager(), injector.getDeserializationGlobalContextForJava(),
|
||||
|
||||
+1
-16
@@ -16,21 +16,6 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.kotlin.incremental
|
||||
|
||||
import java.io.File
|
||||
import java.util.ServiceLoader
|
||||
|
||||
public trait IncrementalCacheProvider {
|
||||
// IncrementalCache should be always closed after using
|
||||
public fun getIncrementalCache(baseDir: File): IncrementalCache
|
||||
|
||||
public class object {
|
||||
public fun getInstance(): IncrementalCacheProvider? {
|
||||
val serviceLoader = ServiceLoader.load(javaClass<IncrementalCacheProvider>(), javaClass<IncrementalCacheProvider>().getClassLoader())
|
||||
val implementations = serviceLoader.toList()
|
||||
if (implementations.size > 1) {
|
||||
throw IllegalStateException("More than one IncrementalCacheProvider: " + implementations)
|
||||
}
|
||||
return implementations.firstOrNull()
|
||||
}
|
||||
}
|
||||
public fun getIncrementalCache(moduleId: String): IncrementalCache
|
||||
}
|
||||
Reference in New Issue
Block a user