Top Inners Fields Constructors Methods
kotlin.reflect.jvm.internal.impl.load.kotlin.header

public Class ReadKotlinClassHeaderAnnotationVisitor

extends Object
implements kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationVisitor
Class Inheritance
Imports
org.jetbrains.annotations.NotNull, .Nullable, kotlin.reflect.jvm.internal.impl.descriptors.SourceElement, kotlin.reflect.jvm.internal.impl.load.java.JvmAnnotationNames, kotlin.reflect.jvm.internal.impl.metadata.jvm.deserialization.BitEncoding, kotlin.reflect.jvm.internal.impl.metadata.jvm.deserialization.JvmMetadataVersion, kotlin.reflect.jvm.internal.impl.name.ClassId, kotlin.reflect.jvm.internal.impl.name.FqName, kotlin.reflect.jvm.internal.impl.name.Name, kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue, java.security.AccessControlException, java.util.ArrayList, .HashMap, .List, .Map

Nested and Inner Type Summary

Modifier and TypeClass and Description
private abstract static class
private class
ReadKotlinClassHeaderAnnotationVisitor.KotlinMetadataArgumentVisitor

JVM bytecode format doesn't allow null as the annotation argument value, so we use the default value of the argument's type to signify that the argument is absent.

private class
private class

Field Summary

Modifier and TypeField and Description
private String[]
private int
private String
private static final Map<kotlin.reflect.jvm.internal.impl.name.ClassId, kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader.Kind>
private kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader.Kind
private static boolean
private String[]
private int[]
private String
private String[]
private String[]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader
createHeader(kotlin.reflect.jvm.internal.impl.metadata.jvm.deserialization.JvmMetadataVersion metadataVersionFromLanguageVersion)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader
private boolean
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
visitAnnotation(@NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId, @NotNull kotlin.reflect.jvm.internal.impl.descriptors.SourceElement source)

public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

databack to summary
private String[] data
extraIntback to summary
private int extraInt
extraStringback to summary
private String extraString
HEADER_KINDSback to summary
private static final Map<kotlin.reflect.jvm.internal.impl.name.ClassId, kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader.Kind> HEADER_KINDS
headerKindback to summary
private kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader.Kind headerKind
IGNORE_OLD_METADATAback to summary
private static boolean IGNORE_OLD_METADATA
incompatibleDataback to summary
private String[] incompatibleData
metadataVersionArrayback to summary
private int[] metadataVersionArray
packageNameback to summary
private String packageName
serializedIrFieldsback to summary
private String[] serializedIrFields
stringsback to summary
private String[] strings

Constructor Detail

ReadKotlinClassHeaderAnnotationVisitorback to summary
public ReadKotlinClassHeaderAnnotationVisitor()

Method Detail

createHeaderback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader createHeader(kotlin.reflect.jvm.internal.impl.metadata.jvm.deserialization.JvmMetadataVersion metadataVersionFromLanguageVersion)
Annotations
@Nullable
createHeaderWithDefaultMetadataVersionback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader createHeaderWithDefaultMetadataVersion()
Annotations
@Nullable
shouldHaveDataback to summary
private boolean shouldHaveData()
visitAnnotationback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor visitAnnotation(@NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId, @NotNull kotlin.reflect.jvm.internal.impl.descriptors.SourceElement source)
Annotations
@Nullable
@Override
visitEndback to summary
public void visitEnd()
Annotations
@Override
kotlin.reflect.jvm.internal.impl.load.kotlin.header back to summary

private abstract Class ReadKotlinClassHeaderAnnotationVisitor.CollectStringArrayAnnotationVisitor

extends Object
implements kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
Class Inheritance
  • java.lang.Object
  • kotlin.reflect.jvm.internal.impl.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor.CollectStringArrayAnnotationVisitor

Field Summary

Modifier and TypeField and Description
private final List<String>

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
visitAnnotation(@NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)

public void
visitClassLiteral(@NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)

public void
protected abstract void
public void
visitEnum(@NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

stringsback to summary
private final List<String> strings

Constructor Detail

CollectStringArrayAnnotationVisitorback to summary
public CollectStringArrayAnnotationVisitor()

Method Detail

visitback to summary
public void visit(@Nullable Object value)
Annotations
@Override
visitAnnotationback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor visitAnnotation(@NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)
Annotations
@Nullable
@Override
visitClassLiteralback to summary
public void visitClassLiteral(@NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)
Annotations
@Override
visitEndback to summary
public void visitEnd()
Annotations
@Override
visitEndback to summary
protected abstract void visitEnd(@NotNull String[] data)
visitEnumback to summary
public void visitEnum(@NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)
Annotations
@Override
kotlin.reflect.jvm.internal.impl.load.kotlin.header back to summary

private Class ReadKotlinClassHeaderAnnotationVisitor.KotlinMetadataArgumentVisitor

extends Object
implements kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
Class Inheritance
  • java.lang.Object
  • kotlin.reflect.jvm.internal.impl.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor.KotlinMetadataArgumentVisitor

JVM bytecode format doesn't allow null as the annotation argument value, so we use the default value of the argument's type to signify that the argument is absent. So if we read an empty string, for example, we should interpret it as if there was no value at all.

If we didn't, it could lead to problems for arguments like ReadKotlinClassHeaderAnnotationVisitor#packageName (corresponding to kotlin.Metadata#pn): the class could be loaded as if it's JVM package name is the default package, which makes no sense and leads to problems in IDE like KT-39492, KTIJ-18094.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
public void
visit(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @Nullable Object value)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
visitAnnotation(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
visitArray(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name)

public void
visitClassLiteral(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)

public void
public void
visitEnum(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

KotlinMetadataArgumentVisitorback to summary
private KotlinMetadataArgumentVisitor()

Method Detail

dataArrayVisitorback to summary
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor dataArrayVisitor()
Annotations
@NotNull
stringsArrayVisitorback to summary
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor stringsArrayVisitor()
Annotations
@NotNull
visitback to summary
public void visit(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @Nullable Object value)
Annotations
@Override
visitAnnotationback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor visitAnnotation(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)
Annotations
@Nullable
@Override
visitArrayback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor visitArray(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name)
Annotations
@Override
@Nullable
visitClassLiteralback to summary
public void visitClassLiteral(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)
Annotations
@Override
visitEndback to summary
public void visitEnd()
Annotations
@Override
visitEnumback to summary
public void visitEnum(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)
Annotations
@Override
kotlin.reflect.jvm.internal.impl.load.kotlin.header back to summary

private Class ReadKotlinClassHeaderAnnotationVisitor.KotlinSerializedIrArgumentVisitor

extends Object
implements kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
Class Inheritance
  • java.lang.Object
  • kotlin.reflect.jvm.internal.impl.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor.KotlinSerializedIrArgumentVisitor

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
public void
visit(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @Nullable Object value)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
visitAnnotation(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
visitArray(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name)

public void
visitClassLiteral(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)

public void
public void
visitEnum(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

KotlinSerializedIrArgumentVisitorback to summary
private KotlinSerializedIrArgumentVisitor()

Method Detail

serializedIrArrayVisitorback to summary
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor serializedIrArrayVisitor()
Annotations
@NotNull
visitback to summary
public void visit(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @Nullable Object value)
Annotations
@Override
visitAnnotationback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor visitAnnotation(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)
Annotations
@Nullable
@Override
visitArrayback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor visitArray(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name)
Annotations
@Override
@Nullable
visitClassLiteralback to summary
public void visitClassLiteral(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)
Annotations
@Override
visitEndback to summary
public void visitEnd()
Annotations
@Override
visitEnumback to summary
public void visitEnum(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)
Annotations
@Override
kotlin.reflect.jvm.internal.impl.load.kotlin.header back to summary

private Class ReadKotlinClassHeaderAnnotationVisitor.OldDeprecatedAnnotationArgumentVisitor

extends Object
implements kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
Class Inheritance
  • java.lang.Object
  • kotlin.reflect.jvm.internal.impl.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor.OldDeprecatedAnnotationArgumentVisitor

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
public void
visit(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @Nullable Object value)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor
visitAnnotation(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)

public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
visitArray(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name)

public void
visitClassLiteral(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)

public void
public void
visitEnum(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

OldDeprecatedAnnotationArgumentVisitorback to summary
private OldDeprecatedAnnotationArgumentVisitor()

Method Detail

dataArrayVisitorback to summary
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor dataArrayVisitor()
Annotations
@NotNull
stringsArrayVisitorback to summary
private @NotNull kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor stringsArrayVisitor()
Annotations
@NotNull
visitback to summary
public void visit(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @Nullable Object value)
Annotations
@Override
visitAnnotationback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArgumentVisitor visitAnnotation(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId classId)
Annotations
@Nullable
@Override
visitArrayback to summary
public @Nullable kotlin.reflect.jvm.internal.impl.load.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor visitArray(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name)
Annotations
@Override
@Nullable
visitClassLiteralback to summary
public void visitClassLiteral(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.resolve.constants.ClassLiteralValue classLiteralValue)
Annotations
@Override
visitEndback to summary
public void visitEnd()
Annotations
@Override
visitEnumback to summary
public void visitEnum(@Nullable kotlin.reflect.jvm.internal.impl.name.Name name, @NotNull kotlin.reflect.jvm.internal.impl.name.ClassId enumClassId, @NotNull kotlin.reflect.jvm.internal.impl.name.Name enumEntryName)
Annotations
@Override