Write multifile part->facade mapping to .kotlin_module
This commit is contained in:
@@ -185,13 +185,13 @@ public class ClassFileFactory implements OutputFileCollection {
|
||||
final String packageFqNameAsString = packageFqName.asString();
|
||||
return new PackagePartRegistry() {
|
||||
@Override
|
||||
public void addPart(@NotNull String partShortName) {
|
||||
public void addPart(@NotNull String partShortName, @Nullable String facadeShortName) {
|
||||
PackageParts packageParts = partsGroupedByPackage.get(packageFqNameAsString);
|
||||
if (packageParts == null) {
|
||||
packageParts = new PackageParts(packageFqNameAsString);
|
||||
partsGroupedByPackage.put(packageFqNameAsString, packageParts);
|
||||
}
|
||||
packageParts.addPart(partShortName);
|
||||
packageParts.addPart(partShortName, facadeShortName);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -215,14 +215,13 @@ class MultifileClassCodegenImpl(
|
||||
|
||||
if (!state.generateDeclaredClassFilter.shouldGeneratePackagePart(file) || !file.hasDeclarationsForPartClass()) return
|
||||
|
||||
val partInternalName = partType.internalName
|
||||
packagePartRegistry.addPart(partInternalName.substring(partInternalName.lastIndexOf('/') + 1))
|
||||
packagePartRegistry.addPart(partType.internalName.substringAfterLast('/'), facadeClassType.internalName.substringAfterLast('/'))
|
||||
|
||||
val builder = state.factory.newVisitor(MultifileClassPart(file, packageFragment), partType, file)
|
||||
|
||||
MultifileClassPartCodegen(
|
||||
builder, file, packageFragment,
|
||||
getSuperClassForPart(partInternalName),
|
||||
getSuperClassForPart(partType.internalName),
|
||||
shouldGeneratePartHierarchy,
|
||||
partContext, state
|
||||
).generate()
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.SmartList;
|
||||
import kotlin.text.StringsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.codegen.context.PackageContext;
|
||||
@@ -125,7 +126,7 @@ public class PackageCodegenImpl implements PackageCodegen {
|
||||
if (!generatePackagePart || !state.getGenerateDeclaredClassFilter().shouldGeneratePackagePart(file)) return;
|
||||
|
||||
String name = fileClassType.getInternalName();
|
||||
packagePartRegistry.addPart(name.substring(name.lastIndexOf('/') + 1));
|
||||
packagePartRegistry.addPart(StringsKt.substringAfterLast(name, '/', name), null);
|
||||
|
||||
ClassBuilder builder = state.getFactory().newVisitor(JvmDeclarationOriginKt.PackagePart(file, packageFragment), fileClassType, file);
|
||||
|
||||
|
||||
@@ -17,5 +17,5 @@
|
||||
package org.jetbrains.kotlin.codegen
|
||||
|
||||
interface PackagePartRegistry {
|
||||
fun addPart(partShortName: String)
|
||||
fun addPart(partShortName: String, facadeShortName: String?)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user