diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java index 5e93da4ecb7..00cb81608b9 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java @@ -19,16 +19,19 @@ package org.jetbrains.kotlin.codegen; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import kotlin.collections.CollectionsKt; +import kotlin.io.FilesKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import org.jetbrains.kotlin.backend.common.output.OutputFile; import org.jetbrains.kotlin.backend.common.output.OutputFileCollection; import org.jetbrains.kotlin.codegen.state.GenerationState; +import org.jetbrains.kotlin.load.kotlin.ModuleMapping; import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils; import org.jetbrains.kotlin.load.kotlin.PackageParts; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.KtFile; +import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; import org.jetbrains.kotlin.serialization.jvm.JvmPackageTable; import org.jetbrains.org.objectweb.asm.Type; @@ -143,8 +146,26 @@ public class ClassFileFactory implements OutputFileCollection { StringBuilder answer = new StringBuilder(); for (OutputFile file : asList()) { - answer.append("@").append(file.getRelativePath()).append('\n'); - answer.append(file.asText()); + File relativePath = new File(file.getRelativePath()); + answer.append("@").append(relativePath).append('\n'); + switch (FilesKt.getExtension(relativePath)) { + case "class": + answer.append(file.asText()); + break; + case "kotlin_module": { + ModuleMapping mapping = ModuleMapping.Companion.create( + file.asByteArray(), relativePath.getPath(), CompilerDeserializationConfiguration.Default.INSTANCE + ); + for (Map.Entry entry : mapping.getPackageFqName2Parts().entrySet()) { + FqName packageFqName = new FqName(entry.getKey()); + PackageParts packageParts = entry.getValue(); + answer.append("\n"); + } + break; + } + default: + throw new UnsupportedOperationException("Unknown OutputFile: " + file); + } } return answer.toString();