Rename KotlinClassFileHeader and related classes

This commit is contained in:
Alexander Udalov
2013-10-03 22:31:52 +04:00
parent c3abd1c26f
commit 89dbafb6be
12 changed files with 29 additions and 30 deletions
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
public class CliVirtualFileFinder implements VirtualFileFinder { public class CliVirtualFileFinder implements VirtualFileFinder {
@@ -71,7 +71,7 @@ public class CliVirtualFileFinder implements VirtualFileFinder {
return null; return null;
} }
//NOTE: currently we use VirtualFileFinder to find Kotlin binaries only //NOTE: currently we use VirtualFileFinder to find Kotlin binaries only
if (KotlinClassFileHeader.readKotlinHeaderFromClassFile(new VirtualFileKotlinClass(vFile)) != null) { if (KotlinClassHeader.read(new VirtualFileKotlinClass(vFile)) != null) {
return vFile; return vFile;
} }
} }
@@ -28,7 +28,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter; import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
@@ -110,7 +110,7 @@ public final class DeserializedDescriptorResolver {
@Nullable @Nullable
private String[] readData(@NotNull KotlinJvmBinaryClass kotlinClass) { private String[] readData(@NotNull KotlinJvmBinaryClass kotlinClass) {
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(kotlinClass); KotlinClassHeader header = KotlinClassHeader.read(kotlinClass);
if (header instanceof SerializedDataHeader) { if (header instanceof SerializedDataHeader) {
return ((SerializedDataHeader) header).getAnnotationData(); return ((SerializedDataHeader) header).getAnnotationData();
} }
@@ -16,7 +16,7 @@
package org.jetbrains.jet.lang.resolve.kotlin.header; package org.jetbrains.jet.lang.resolve.kotlin.header;
public class IncompatibleAnnotationHeader extends KotlinClassFileHeader { public class IncompatibleAnnotationHeader extends KotlinClassHeader {
protected IncompatibleAnnotationHeader(int version) { protected IncompatibleAnnotationHeader(int version) {
super(version); super(version);
} }
@@ -20,15 +20,15 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass; import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
public abstract class KotlinClassFileHeader { public abstract class KotlinClassHeader {
@Nullable @Nullable
public static KotlinClassFileHeader readKotlinHeaderFromClassFile(@NotNull KotlinJvmBinaryClass kotlinClass) { public static KotlinClassHeader read(@NotNull KotlinJvmBinaryClass kotlinClass) {
return ReadDataFromAnnotationVisitor.read(kotlinClass); return ReadKotlinClassHeaderAnnotationVisitor.read(kotlinClass);
} }
private final int version; private final int version;
protected KotlinClassFileHeader(int version) { protected KotlinClassHeader(int version) {
this.version = version; this.version = version;
} }
@@ -16,8 +16,8 @@
package org.jetbrains.jet.lang.resolve.kotlin.header; package org.jetbrains.jet.lang.resolve.kotlin.header;
public class PackageFragmentClassFileHeader extends KotlinClassFileHeader { public class PackageFragmentClassHeader extends KotlinClassHeader {
protected PackageFragmentClassFileHeader(int version) { protected PackageFragmentClassHeader(int version) {
super(version); super(version);
} }
} }
@@ -32,7 +32,7 @@ import static org.jetbrains.jet.lang.resolve.java.AbiVersionUtil.isAbiVersionCom
import static org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor; import static org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor;
import static org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationVisitor; import static org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationVisitor;
/* package */ class ReadDataFromAnnotationVisitor implements AnnotationVisitor { /* package */ class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private enum HeaderType { private enum HeaderType {
CLASS(JvmAnnotationNames.KOTLIN_CLASS), CLASS(JvmAnnotationNames.KOTLIN_CLASS),
@@ -65,18 +65,18 @@ import static org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.Annotat
@Nullable @Nullable
private HeaderType foundType = null; private HeaderType foundType = null;
private ReadDataFromAnnotationVisitor() { private ReadKotlinClassHeaderAnnotationVisitor() {
} }
@Nullable @Nullable
public static KotlinClassFileHeader read(@NotNull KotlinJvmBinaryClass kotlinClass) { public static KotlinClassHeader read(@NotNull KotlinJvmBinaryClass kotlinClass) {
ReadDataFromAnnotationVisitor visitor = new ReadDataFromAnnotationVisitor(); ReadKotlinClassHeaderAnnotationVisitor visitor = new ReadKotlinClassHeaderAnnotationVisitor();
kotlinClass.loadClassAnnotations(visitor); kotlinClass.loadClassAnnotations(visitor);
return visitor.createHeader(); return visitor.createHeader();
} }
@Nullable @Nullable
public KotlinClassFileHeader createHeader() { public KotlinClassHeader createHeader() {
if (foundType == null) { if (foundType == null) {
return null; return null;
} }
@@ -91,7 +91,7 @@ import static org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.Annotat
case PACKAGE: case PACKAGE:
return serializedDataHeader(SerializedDataHeader.Kind.PACKAGE); return serializedDataHeader(SerializedDataHeader.Kind.PACKAGE);
case PACKAGE_FRAGMENT: case PACKAGE_FRAGMENT:
return new PackageFragmentClassFileHeader(version); return new PackageFragmentClassHeader(version);
default: default:
throw new UnsupportedOperationException("Unknown compatible HeaderType: " + foundType); throw new UnsupportedOperationException("Unknown compatible HeaderType: " + foundType);
} }
@@ -18,7 +18,7 @@ package org.jetbrains.jet.lang.resolve.kotlin.header;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class SerializedDataHeader extends KotlinClassFileHeader { public class SerializedDataHeader extends KotlinClassHeader {
public enum Kind { public enum Kind {
CLASS, CLASS,
PACKAGE PACKAGE
@@ -30,7 +30,7 @@ import org.jetbrains.jet.descriptors.serialization.*;
import org.jetbrains.jet.lang.descriptors.ClassKind; import org.jetbrains.jet.lang.descriptors.ClassKind;
import org.jetbrains.jet.lang.resolve.java.JavaResolverPsiUtils; import org.jetbrains.jet.lang.resolve.java.JavaResolverPsiUtils;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
@@ -117,7 +117,7 @@ public class JetFromJavaDescriptorHelper {
private static String[] getAnnotationDataForKotlinClass(@NotNull PsiClass psiClass) { private static String[] getAnnotationDataForKotlinClass(@NotNull PsiClass psiClass) {
VirtualFile virtualFile = getVirtualFileForPsiClass(psiClass); VirtualFile virtualFile = getVirtualFileForPsiClass(psiClass);
if (virtualFile != null) { if (virtualFile != null) {
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(new VirtualFileKotlinClass(virtualFile)); KotlinClassHeader header = KotlinClassHeader.read(new VirtualFileKotlinClass(virtualFile));
if (header instanceof SerializedDataHeader) { if (header instanceof SerializedDataHeader) {
return ((SerializedDataHeader) header).getAnnotationData(); return ((SerializedDataHeader) header).getAnnotationData();
} }
@@ -28,7 +28,7 @@ import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import org.jetbrains.jet.lang.resolve.MemberComparator; import org.jetbrains.jet.lang.resolve.MemberComparator;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.DescriptorRenderer;
@@ -68,7 +68,7 @@ public final class DecompiledDataFactory {
VirtualFileKotlinClass kotlinClass = new VirtualFileKotlinClass(classFile); VirtualFileKotlinClass kotlinClass = new VirtualFileKotlinClass(classFile);
this.classFqName = kotlinClass.getClassName().getFqNameForClassNameWithoutDollars(); this.classFqName = kotlinClass.getClassName().getFqNameForClassNameWithoutDollars();
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(kotlinClass); KotlinClassHeader header = KotlinClassHeader.read(kotlinClass);
assert header instanceof SerializedDataHeader : "Decompiled data factory shouldn't be called on an unsupported file: " + classFile; assert header instanceof SerializedDataHeader : "Decompiled data factory shouldn't be called on an unsupported file: " + classFile;
this.classFileHeader = (SerializedDataHeader) header; this.classFileHeader = (SerializedDataHeader) header;
} }
@@ -20,7 +20,7 @@ import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.SerializedDataHeader;
public final class DecompiledUtils { public final class DecompiledUtils {
@@ -30,7 +30,7 @@ public final class DecompiledUtils {
return false; return false;
} }
//TODO: check index //TODO: check index
return KotlinClassFileHeader.readKotlinHeaderFromClassFile(new VirtualFileKotlinClass(file)) instanceof SerializedDataHeader; return KotlinClassHeader.read(new VirtualFileKotlinClass(file)) instanceof SerializedDataHeader;
} }
private DecompiledUtils() { private DecompiledUtils() {
@@ -26,8 +26,8 @@ import com.intellij.util.cls.ClsFormatException;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.kotlin.header.PackageFragmentClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.PackageFragmentClassHeader;
/** /**
* This class is needed to build an empty PSI stub for compiled package fragment classes. This results in these classes not showing up * This class is needed to build an empty PSI stub for compiled package fragment classes. This results in these classes not showing up
@@ -44,8 +44,7 @@ public class EmptyPackageFragmentClsStubBuilderFactory extends ClsStubBuilderFac
public boolean canBeProcessed(VirtualFile file, byte[] bytes) { public boolean canBeProcessed(VirtualFile file, byte[] bytes) {
if (file.getName().contains(PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + "-") && if (file.getName().contains(PackageClassUtils.PACKAGE_CLASS_NAME_SUFFIX + "-") &&
StdFileTypes.CLASS.getDefaultExtension().equals(file.getExtension())) { StdFileTypes.CLASS.getDefaultExtension().equals(file.getExtension())) {
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(new VirtualFileKotlinClass(file)); return KotlinClassHeader.read(new VirtualFileKotlinClass(file)) instanceof PackageFragmentClassHeader;
return header instanceof PackageFragmentClassFileHeader;
} }
return false; return false;
} }
@@ -24,7 +24,7 @@ import com.intellij.util.io.KeyDescriptor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass;
import org.jetbrains.jet.lang.resolve.kotlin.header.IncompatibleAnnotationHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.IncompatibleAnnotationHeader;
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassFileHeader; import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import java.io.DataInput; import java.io.DataInput;
@@ -76,7 +76,7 @@ public final class KotlinClassFileIndex extends ScalarIndexExtension<FqName> {
public Map<FqName, Void> map(FileContent inputData) { public Map<FqName, Void> map(FileContent inputData) {
try { try {
VirtualFileKotlinClass kotlinClass = new VirtualFileKotlinClass(inputData.getFile()); VirtualFileKotlinClass kotlinClass = new VirtualFileKotlinClass(inputData.getFile());
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(kotlinClass); KotlinClassHeader header = KotlinClassHeader.read(kotlinClass);
if (header != null && !(header instanceof IncompatibleAnnotationHeader)) { if (header != null && !(header instanceof IncompatibleAnnotationHeader)) {
return Collections.singletonMap(kotlinClass.getClassName().getFqNameForClassNameWithoutDollars(), null); return Collections.singletonMap(kotlinClass.getClassName().getFqNameForClassNameWithoutDollars(), null);
} }