Simplified process of filtering out obsolete package parts and loading descriptors from incremental caches.

Now when file is deleted or dirty (compiled right now), its old package part is used. Current package of file doesn't matter.
This commit is contained in:
Evgeny Gerashchenko
2015-02-03 17:18:17 +03:00
parent 512ea72e69
commit f071802e19
23 changed files with 176 additions and 62 deletions
@@ -62,8 +62,8 @@ public class KotlinCodegenFacade {
packageFqNameToFiles.putValue(file.getPackageFqName(), file);
}
Set<FqName> removedPackageFiles = new HashSet<FqName>(state.getPackagesWithRemovedFiles());
for (FqName fqName : Sets.union(removedPackageFiles, packageFqNameToFiles.keySet())) {
Set<FqName> packagesWithObsoleteParts = new HashSet<FqName>(state.getPackagesWithObsoleteParts());
for (FqName fqName : Sets.union(packagesWithObsoleteParts, packageFqNameToFiles.keySet())) {
generatePackage(state, fqName, packageFqNameToFiles.get(fqName), errorHandler);
}
@@ -111,7 +111,7 @@ public class GenerationState {
private final ModuleDescriptor module;
@NotNull
private final Collection<FqName> packagesWithRemovedFiles;
private final Collection<FqName> packagesWithObsoleteParts;
@Nullable
private final String moduleId; // for PackageCodegen in incremental compilation mode
@@ -142,7 +142,7 @@ public class GenerationState {
GenerateClassFilter generateClassFilter,
boolean disableInline,
boolean disableOptimization,
@Nullable Collection<FqName> packagesWithRemovedFiles,
@Nullable Collection<FqName> packagesWithObsoleteParts,
@Nullable String moduleId,
@NotNull DiagnosticSink diagnostics,
@Nullable File outDirectory
@@ -152,7 +152,7 @@ public class GenerationState {
this.module = module;
this.files = files;
this.moduleId = moduleId;
this.packagesWithRemovedFiles = packagesWithRemovedFiles == null ? Collections.<FqName>emptySet() : packagesWithRemovedFiles;
this.packagesWithObsoleteParts = packagesWithObsoleteParts == null ? Collections.<FqName>emptySet() : packagesWithObsoleteParts;
this.classBuilderMode = builderFactory.getClassBuilderMode();
this.disableInline = disableInline;
@@ -287,8 +287,8 @@ public class GenerationState {
}
@NotNull
public Collection<FqName> getPackagesWithRemovedFiles() {
return packagesWithRemovedFiles;
public Collection<FqName> getPackagesWithObsoleteParts() {
return packagesWithObsoleteParts;
}
@Nullable