Use simple data class TargetId instead of Module to get incremental cache

This commit is contained in:
Alexey Tsvetkov
2015-09-07 16:46:04 +03:00
parent 45dae5e1a4
commit 7e515e3820
18 changed files with 118 additions and 96 deletions
@@ -25,7 +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.modules.TargetId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.JetFile
@@ -46,11 +46,11 @@ import java.util.*
public class IncrementalPackageFragmentProvider(
sourceFiles: Collection<JetFile>,
val module: ModuleDescriptor,
val moduleDescriptor: ModuleDescriptor,
val storageManager: StorageManager,
val deserializationComponents: DeserializationComponents,
val incrementalCache: IncrementalCache,
val target: Module
val target: TargetId
) : PackageFragmentProvider {
companion object {
@@ -93,8 +93,8 @@ public class IncrementalPackageFragmentProvider(
}
public inner class IncrementalPackageFragment(fqName: FqName) : PackageFragmentDescriptorImpl(module, fqName) {
public val target: Module
public inner class IncrementalPackageFragment(fqName: FqName) : PackageFragmentDescriptorImpl(moduleDescriptor, fqName) {
public val target: TargetId
get() = this@IncrementalPackageFragmentProvider.target
val memberScope: NotNullLazyValue<JetScope> = storageManager.createLazyValue {
@@ -20,7 +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.modules.TargetId
import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.storage.StorageManager
@@ -47,13 +47,13 @@ internal class IncrementalPackagePartProvider private constructor(
public fun create(
parent: PackagePartProvider,
sourceFiles: Collection<JetFile>,
modules: List<Module>?,
targets: List<TargetId>?,
incrementalCompilationComponents: IncrementalCompilationComponents?,
storageManager: StorageManager
): PackagePartProvider {
if (modules == null || incrementalCompilationComponents == null) return parent
if (targets == null || incrementalCompilationComponents == null) return parent
val incrementalCaches = modules.map { incrementalCompilationComponents.getIncrementalCache(it) }
val incrementalCaches = targets.map { incrementalCompilationComponents.getIncrementalCache(it) }
return IncrementalPackagePartProvider(parent, sourceFiles, incrementalCaches, storageManager)
}
}
@@ -17,9 +17,9 @@
package org.jetbrains.kotlin.load.kotlin.incremental.components
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.modules.Module
import org.jetbrains.kotlin.modules.TargetId
public interface IncrementalCompilationComponents {
public fun getIncrementalCache(target: Module): IncrementalCache
public fun getIncrementalCache(target: TargetId): IncrementalCache
public fun getLookupTracker(): LookupTracker
}
@@ -33,6 +33,8 @@ import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvid
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.modules.ModulesPackage;
import org.jetbrains.kotlin.modules.TargetId;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap;
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
@@ -101,12 +103,12 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull ModuleContext moduleContext,
@NotNull Collection<JetFile> files,
@NotNull BindingTrace trace,
@Nullable List<Module> targets,
@Nullable List<Module> modules,
@Nullable IncrementalCompilationComponents incrementalCompilationComponents,
@NotNull PackagePartProvider packagePartProvider
) {
return analyzeFilesWithJavaIntegration(
moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, targets, incrementalCompilationComponents,
moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, modules, incrementalCompilationComponents,
packagePartProvider);
}
@@ -116,7 +118,7 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull Collection<JetFile> files,
@NotNull BindingTrace trace,
@NotNull TopDownAnalysisMode topDownAnalysisMode,
@Nullable List<Module> targets,
@Nullable List<Module> modules,
@Nullable IncrementalCompilationComponents incrementalCompilationComponents,
@NotNull PackagePartProvider packagePartProvider
) {
@@ -129,7 +131,16 @@ public enum TopDownAnalyzerFacadeForJVM {
LookupTracker lookupTracker =
incrementalCompilationComponents != null ? incrementalCompilationComponents.getLookupTracker() : LookupTracker.DO_NOTHING;
packagePartProvider = IncrementalPackagePartProvider.create(packagePartProvider, files, targets, incrementalCompilationComponents, moduleContext.getStorageManager());
List<TargetId> targetIds = null;
if (modules != null) {
targetIds = new ArrayList<TargetId>(modules.size());
for (Module module : modules) {
targetIds.add(ModulesPackage.TargetId(module));
}
}
packagePartProvider = IncrementalPackagePartProvider.create(packagePartProvider, files, targetIds, incrementalCompilationComponents, moduleContext.getStorageManager());
ContainerForTopDownAnalyzerForJvm container = DiPackage.createContainerForTopDownAnalyzerForJvm(
moduleContext,
@@ -142,15 +153,15 @@ public enum TopDownAnalyzerFacadeForJVM {
List<PackageFragmentProvider> additionalProviders = new ArrayList<PackageFragmentProvider>();
if (targets != null && incrementalCompilationComponents != null) {
for (Module target : targets) {
IncrementalCache incrementalCache = incrementalCompilationComponents.getIncrementalCache(target);
if (targetIds != null && incrementalCompilationComponents != null) {
for (TargetId targetId : targetIds) {
IncrementalCache incrementalCache = incrementalCompilationComponents.getIncrementalCache(targetId);
additionalProviders.add(
new IncrementalPackageFragmentProvider(
files, moduleContext.getModule(), moduleContext.getStorageManager(),
container.getDeserializationComponentsForJava().getComponents(),
incrementalCache, target
incrementalCache, targetId
)
);
}