Refactor PackageParts: add explicit mutating methods
This commit is contained in:
@@ -21,8 +21,6 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import kotlin.collections.MapsKt;
|
||||
import kotlin.jvm.functions.Function0;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
@@ -188,17 +186,17 @@ public class ClassFileFactory implements OutputFileCollection {
|
||||
return new PackagePartRegistry() {
|
||||
@Override
|
||||
public void addPart(@NotNull String partShortName) {
|
||||
MapsKt.getOrPut(partsGroupedByPackage, packageFqNameAsString, new Function0<PackageParts>() {
|
||||
@Override
|
||||
public PackageParts invoke() {
|
||||
return new PackageParts(packageFqNameAsString);
|
||||
}
|
||||
}).getParts().add(partShortName);
|
||||
PackageParts packageParts = partsGroupedByPackage.get(packageFqNameAsString);
|
||||
if (packageParts == null) {
|
||||
packageParts = new PackageParts(packageFqNameAsString);
|
||||
partsGroupedByPackage.put(packageFqNameAsString, packageParts);
|
||||
}
|
||||
packageParts.addPart(partShortName);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void registerPackagePartSourceFiles(Collection<KtFile> files) {
|
||||
private void registerPackagePartSourceFiles(Collection<KtFile> files) {
|
||||
packagePartSourceFiles.addAll(toIoFilesIgnoringNonPhysical(PackagePartClassUtils.getFilesWithCallables(files)));
|
||||
}
|
||||
|
||||
|
||||
@@ -42,20 +42,18 @@ private fun Iterable<PackageParts>.addCompiledParts(state: GenerationState): Lis
|
||||
|
||||
val mapping = ModuleMapping.create(moduleMappingData, "<incremental>")
|
||||
|
||||
incrementalCache.getObsoletePackageParts().forEach {
|
||||
val i = it.lastIndexOf('/')
|
||||
val qualifier = if (i == -1) "" else it.substring(0, i).replace('/', '.')
|
||||
val name = it.substring(i + 1)
|
||||
mapping.findPackageParts(qualifier)?.run { parts.remove(name) }
|
||||
incrementalCache.getObsoletePackageParts().forEach { internalName ->
|
||||
val qualifier = internalName.substringBeforeLast('/', "").replace('/', '.')
|
||||
val name = internalName.substringAfterLast('/')
|
||||
mapping.findPackageParts(qualifier)?.removePart(name)
|
||||
}
|
||||
|
||||
return (this + mapping.packageFqName2Parts.values)
|
||||
.groupBy { it.packageFqName }
|
||||
.map {
|
||||
val (packageFqName, packageParts) = it
|
||||
val newPackageParts = PackageParts(packageFqName)
|
||||
packageParts.forEach { newPackageParts.parts.addAll(it.parts) }
|
||||
newPackageParts
|
||||
.map { (packageFqName, allOldPackageParts) ->
|
||||
PackageParts(packageFqName).apply {
|
||||
allOldPackageParts.forEach { packageParts -> this += packageParts }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user