Render .kotlin_module files nicely for tests
This commit is contained in:
@@ -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<String, PackageParts> entry : mapping.getPackageFqName2Parts().entrySet()) {
|
||||
FqName packageFqName = new FqName(entry.getKey());
|
||||
PackageParts packageParts = entry.getValue();
|
||||
answer.append("<package ").append(packageFqName).append(": ").append(packageParts.getParts()).append(">\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new UnsupportedOperationException("Unknown OutputFile: " + file);
|
||||
}
|
||||
}
|
||||
|
||||
return answer.toString();
|
||||
|
||||
Reference in New Issue
Block a user