Use both target name and target type to get incremental cache from backend

This commit is contained in:
Alexey Tsvetkov
2015-08-11 16:25:54 +03:00
parent 18dc752c21
commit 0988b21e9c
16 changed files with 81 additions and 39 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
import org.jetbrains.kotlin.load.kotlin.ModuleMapping
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.modules.Module
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.JetFile
@@ -49,7 +50,7 @@ public class IncrementalPackageFragmentProvider(
val storageManager: StorageManager,
val deserializationComponents: DeserializationComponents,
val incrementalCache: IncrementalCache,
val moduleId: String
val target: Module
) : PackageFragmentProvider {
companion object {
@@ -93,8 +94,8 @@ public class IncrementalPackageFragmentProvider(
public inner class IncrementalPackageFragment(fqName: FqName) : PackageFragmentDescriptorImpl(module, fqName) {
public val moduleId: String
get() = this@IncrementalPackageFragmentProvider.moduleId
public val target: Module
get() = this@IncrementalPackageFragmentProvider.target
val memberScope: NotNullLazyValue<JetScope> = storageManager.createLazyValue {
if (fqName !in fqNamesToLoad) {
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.PackagePartProvider
import org.jetbrains.kotlin.load.kotlin.ModuleMapping
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.Module
import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.storage.StorageManager
@@ -46,14 +47,13 @@ internal class IncrementalPackagePartProvider private constructor(
public fun create(
parent: PackagePartProvider,
sourceFiles: Collection<JetFile>,
moduleIds: List<String>?,
modules: List<Module>?,
incrementalCompilationComponents: IncrementalCompilationComponents?,
storageManager: StorageManager
): PackagePartProvider {
if (moduleIds == null || incrementalCompilationComponents == null) return parent
val incrementalCaches = moduleIds.map { incrementalCompilationComponents.getIncrementalCache(it) }
if (modules == null || incrementalCompilationComponents == null) return parent
val incrementalCaches = modules.map { incrementalCompilationComponents.getIncrementalCache(it) }
return IncrementalPackagePartProvider(parent, sourceFiles, incrementalCaches, storageManager)
}
}
@@ -17,8 +17,9 @@
package org.jetbrains.kotlin.load.kotlin.incremental.components
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.modules.Module
public interface IncrementalCompilationComponents {
public fun getIncrementalCache(moduleId: String): IncrementalCache
public fun getIncrementalCache(target: Module): IncrementalCache
public fun getLookupTracker(): LookupTracker
}
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentPr
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider;
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache;
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents;
import org.jetbrains.kotlin.modules.Module;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap;
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
@@ -100,12 +101,12 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull ModuleContext moduleContext,
@NotNull Collection<JetFile> files,
@NotNull BindingTrace trace,
@Nullable List<String> moduleIds,
@Nullable List<Module> targets,
@Nullable IncrementalCompilationComponents incrementalCompilationComponents,
@NotNull PackagePartProvider packagePartProvider
) {
return analyzeFilesWithJavaIntegration(
moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, moduleIds, incrementalCompilationComponents,
moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, targets, incrementalCompilationComponents,
packagePartProvider);
}
@@ -115,7 +116,7 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull Collection<JetFile> files,
@NotNull BindingTrace trace,
@NotNull TopDownAnalysisMode topDownAnalysisMode,
@Nullable List<String> moduleIds,
@Nullable List<Module> targets,
@Nullable IncrementalCompilationComponents incrementalCompilationComponents,
@NotNull PackagePartProvider packagePartProvider
) {
@@ -128,7 +129,7 @@ public enum TopDownAnalyzerFacadeForJVM {
LookupTracker lookupTracker =
incrementalCompilationComponents != null ? incrementalCompilationComponents.getLookupTracker() : LookupTracker.DO_NOTHING;
packagePartProvider = IncrementalPackagePartProvider.create(packagePartProvider, files, moduleIds, incrementalCompilationComponents, moduleContext.getStorageManager());
packagePartProvider = IncrementalPackagePartProvider.create(packagePartProvider, files, targets, incrementalCompilationComponents, moduleContext.getStorageManager());
ContainerForTopDownAnalyzerForJvm container = DiPackage.createContainerForTopDownAnalyzerForJvm(
moduleContext,
@@ -141,15 +142,15 @@ public enum TopDownAnalyzerFacadeForJVM {
List<PackageFragmentProvider> additionalProviders = new ArrayList<PackageFragmentProvider>();
if (moduleIds != null && incrementalCompilationComponents != null) {
for (String moduleId : moduleIds) {
IncrementalCache incrementalCache = incrementalCompilationComponents.getIncrementalCache(moduleId);
if (targets != null && incrementalCompilationComponents != null) {
for (Module target : targets) {
IncrementalCache incrementalCache = incrementalCompilationComponents.getIncrementalCache(target);
additionalProviders.add(
new IncrementalPackageFragmentProvider(
files, moduleContext.getModule(), moduleContext.getStorageManager(),
container.getDeserializationComponentsForJava().getComponents(),
incrementalCache, moduleId
incrementalCache, target
)
);
}