Combine all metadata annotations into one kotlin/Metadata

This commit is contained in:
Alexander Udalov
2015-12-28 21:22:28 +03:00
parent 661af854fa
commit 59dab0a558
27 changed files with 300 additions and 45 deletions
@@ -792,17 +792,19 @@ public class AsmUtil {
public static void writeAnnotationData(
@NotNull AnnotationVisitor av,
@NotNull DescriptorSerializer serializer,
@NotNull MessageLite message
@NotNull MessageLite message,
boolean old
) {
byte[] bytes = serializer.serialize(message);
JvmCodegenUtil.writeAbiVersion(av);
AnnotationVisitor data = av.visitArray(JvmAnnotationNames.DATA_FIELD_NAME);
AnnotationVisitor data = av.visitArray(old ? JvmAnnotationNames.DATA_FIELD_NAME : JvmAnnotationNames.METADATA_DATA_FIELD_NAME);
for (String string : BitEncoding.encodeBytes(bytes)) {
data.visit(null, string);
}
data.visitEnd();
AnnotationVisitor strings = av.visitArray(JvmAnnotationNames.STRINGS_FIELD_NAME);
AnnotationVisitor strings = av.visitArray(
old ? JvmAnnotationNames.STRINGS_FIELD_NAME : JvmAnnotationNames.METADATA_STRINGS_FIELD_NAME
);
for (String string : ((JvmStringTable) serializer.getStringTable()).getStrings()) {
strings.visit(null, string);
}
@@ -18,8 +18,8 @@ package org.jetbrains.kotlin.codegen;
import com.google.common.collect.Lists;
import com.intellij.util.ArrayUtil;
import kotlin.collections.CollectionsKt;
import kotlin.Unit;
import kotlin.collections.CollectionsKt;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl;
import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
import org.jetbrains.kotlin.psi.KtElement;
import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
@@ -58,8 +59,7 @@ import java.util.List;
import static org.jetbrains.kotlin.codegen.AsmUtil.*;
import static org.jetbrains.kotlin.codegen.ExpressionCodegen.generateClassLiteralReference;
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isConst;
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeModuleName;
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.*;
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.CLOSURE;
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.asmTypeForAnonymousClass;
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.*;
@@ -221,15 +221,25 @@ public class ClosureCodegen extends MemberCodegen<KtElement> {
protected void generateKotlinAnnotation() {
writeKotlinSyntheticClassAnnotation(v, state);
DescriptorSerializer serializer =
final DescriptorSerializer serializer =
DescriptorSerializer.createForLambda(
new JvmSerializerExtension(v.getSerializationBindings(), typeMapper, state.getUseTypeTableInSerializer())
);
ProtoBuf.Function functionProto = serializer.functionProto(funDescriptor).build();
final ProtoBuf.Function functionProto = serializer.functionProto(funDescriptor).build();
WriteAnnotationUtilKt.writeKotlinMetadata(v, KotlinClassHeader.Kind.SYNTHETIC_CLASS, new Function1<AnnotationVisitor, Unit>() {
@Override
public Unit invoke(AnnotationVisitor av) {
writeAnnotationData(av, serializer, functionProto, false);
av.visit(JvmAnnotationNames.SYNTHETIC_CLASS_KIND_FIELD_NAME, KotlinClassHeader.SyntheticClassKind.FUNCTION.getId());
return Unit.INSTANCE;
}
});
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FUNCTION), true);
writeAnnotationData(av, serializer, functionProto);
writeAbiVersion(av);
writeAnnotationData(av, serializer, functionProto, true);
writeModuleName(av, state);
av.visitEnd();
}
@@ -19,8 +19,8 @@ package org.jetbrains.kotlin.codegen;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.psi.PsiElement;
import com.intellij.util.ArrayUtil;
import kotlin.collections.CollectionsKt;
import kotlin.Unit;
import kotlin.collections.CollectionsKt;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function2;
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.lexer.KtTokens;
import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor;
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.BindingContext;
@@ -250,15 +251,27 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_LOCAL_CLASS), true).visitEnd();
}
DescriptorSerializer serializer =
final DescriptorSerializer serializer =
DescriptorSerializer.create(descriptor, new JvmSerializerExtension(
v.getSerializationBindings(), typeMapper, state.getUseTypeTableInSerializer()
));
ProtoBuf.Class classProto = serializer.classProto(descriptor).build();
final ProtoBuf.Class classProto = serializer.classProto(descriptor).build();
WriteAnnotationUtilKt.writeKotlinMetadata(v, KotlinClassHeader.Kind.CLASS, new Function1<AnnotationVisitor, Unit>() {
@Override
public Unit invoke(AnnotationVisitor av) {
writeAnnotationData(av, serializer, classProto, false);
if (!isTopLevelOrInnerClass(descriptor)) {
av.visit(JvmAnnotationNames.SYNTHETIC_CLASS_KIND_FIELD_NAME, KotlinClassHeader.SyntheticClassKind.LOCAL_CLASS.getId());
}
return Unit.INSTANCE;
}
});
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_CLASS), true);
writeAnnotationData(av, serializer, classProto);
writeAbiVersion(av);
writeAnnotationData(av, serializer, classProto, true);
writeModuleName(av, state);
av.visitEnd();
}
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.KOTLIN_INTERFACE_DEFAULT_IMPLS
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
@@ -152,6 +153,8 @@ class InterfaceImplBodyCodegen(
v.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(KOTLIN_INTERFACE_DEFAULT_IMPLS), true).visitEnd()
AsmUtil.writeKotlinSyntheticClassAnnotation(v, state)
writeSyntheticClassMetadata(v, KotlinClassHeader.SyntheticClassKind.INTERFACE_DEFAULT_IMPLS);
}
override fun done() {
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.kotlin.PackageParts
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
@@ -48,6 +49,7 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor
import org.jetbrains.org.objectweb.asm.AnnotationVisitor
import org.jetbrains.org.objectweb.asm.MethodVisitor
import org.jetbrains.org.objectweb.asm.Opcodes
import org.jetbrains.org.objectweb.asm.Type
@@ -271,17 +273,24 @@ class MultifileClassCodegen(
if (state.classBuilderMode != ClassBuilderMode.FULL) return
if (files.any { it.isScript }) return
val partInternalNames = partFqNames.map(AsmUtil::internalNameByFqNameWithoutInnerClasses).sorted()
fun writePartNames(av: AnnotationVisitor, fieldName: String) {
val arv = av.visitArray(fieldName)
for (internalName in partInternalNames) {
arv.visit(null, internalName)
}
arv.visitEnd()
}
writeKotlinMetadata(classBuilder, KotlinClassHeader.Kind.MULTIFILE_CLASS) { av ->
writePartNames(av, JvmAnnotationNames.METADATA_DATA_FIELD_NAME)
}
val av = classBuilder.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_MULTIFILE_CLASS), true)
JvmCodegenUtil.writeAbiVersion(av)
JvmCodegenUtil.writeModuleName(av, state)
val partInternalNames = partFqNames.map { JvmClassName.byFqNameWithoutInnerClasses(it).internalName }.sorted()
val arv = av.visitArray(JvmAnnotationNames.FILE_PART_CLASS_NAMES_FIELD_NAME)
for (internalName in partInternalNames) {
arv.visit(null, internalName)
}
arv.visitEnd()
writePartNames(av, JvmAnnotationNames.FILE_PART_CLASS_NAMES_FIELD_NAME)
av.visitEnd()
}
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtProperty
@@ -90,8 +91,14 @@ class MultifileClassPartCodegen(
)
val packageProto = serializer.packagePartProto(members).build()
writeKotlinMetadata(v, KotlinClassHeader.Kind.MULTIFILE_CLASS_PART) { av ->
AsmUtil.writeAnnotationData(av, serializer, packageProto, false)
av.visit(JvmAnnotationNames.METADATA_MULTIFILE_CLASS_NAME_FIELD_NAME, multifileClassType.internalName)
}
val av = v.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_MULTIFILE_CLASS_PART), true)
AsmUtil.writeAnnotationData(av, serializer, packageProto)
JvmCodegenUtil.writeAbiVersion(av)
AsmUtil.writeAnnotationData(av, serializer, packageProto, true)
av.visit(JvmAnnotationNames.MULTIFILE_CLASS_NAME_FIELD_NAME, multifileClassType.internalName)
av.visitEnd()
}
@@ -17,7 +17,9 @@
package org.jetbrains.kotlin.codegen;
import com.intellij.util.ArrayUtil;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.codegen.annotation.AnnotatedSimple;
import org.jetbrains.kotlin.codegen.context.FieldOwnerContext;
@@ -31,6 +33,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotated;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl;
import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.serialization.DescriptorSerializer;
@@ -43,6 +46,7 @@ import java.util.List;
import static org.jetbrains.kotlin.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses;
import static org.jetbrains.kotlin.codegen.AsmUtil.writeAnnotationData;
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeAbiVersion;
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeModuleName;
import static org.jetbrains.org.objectweb.asm.Opcodes.*;
@@ -121,13 +125,22 @@ public class PackagePartCodegen extends MemberCodegen<KtFile> {
JvmSerializationBindings bindings = v.getSerializationBindings();
DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(
final DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(
bindings, state.getTypeMapper(), state.getUseTypeTableInSerializer()
));
ProtoBuf.Package packageProto = serializer.packagePartProto(members).build();
final ProtoBuf.Package packageProto = serializer.packagePartProto(members).build();
WriteAnnotationUtilKt.writeKotlinMetadata(v, KotlinClassHeader.Kind.FILE_FACADE, new Function1<AnnotationVisitor, Unit>() {
@Override
public Unit invoke(AnnotationVisitor av) {
writeAnnotationData(av, serializer, packageProto, false);
return Unit.INSTANCE;
}
});
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FILE_FACADE), true);
writeAnnotationData(av, serializer, packageProto);
writeAbiVersion(av);
writeAnnotationData(av, serializer, packageProto, true);
writeModuleName(av, state);
av.visitEnd();
}
@@ -160,6 +160,8 @@ class PropertyReferenceCodegen(
override fun generateKotlinAnnotation() {
writeKotlinSyntheticClassAnnotation(v, state)
writeSyntheticClassMetadata(v, null)
}
fun putInstanceOnStack(): StackValue =
@@ -96,6 +96,8 @@ public class SamWrapperCodegen {
writeKotlinSyntheticClassAnnotation(cv, state);
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cv, null);
// e.g. ASM type for Function2
Type functionAsmType = typeMapper.mapType(functionType);
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.codegen.when;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.codegen.ClassBuilder;
import org.jetbrains.kotlin.codegen.WriteAnnotationUtilKt;
import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.resolve.constants.EnumValue;
@@ -59,6 +60,8 @@ public class MappingClassesForWhenByEnumCodegen {
writeKotlinSyntheticClassAnnotation(cb, state);
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb, null);
cb.done();
}
@@ -0,0 +1,40 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.codegen
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.java.JvmBytecodeBinaryVersion
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.org.objectweb.asm.AnnotationVisitor
fun writeKotlinMetadata(cb: ClassBuilder, kind: KotlinClassHeader.Kind, action: (AnnotationVisitor) -> Unit) {
val av = cb.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.METADATA), true)
av.visit(JvmAnnotationNames.METADATA_VERSION_FIELD_NAME, JvmMetadataVersion.INSTANCE.toArray())
av.visit(JvmAnnotationNames.BYTECODE_VERSION_FIELD_NAME, JvmBytecodeBinaryVersion.INSTANCE.toArray())
av.visit(JvmAnnotationNames.KIND_FIELD_NAME, kind.id)
action(av)
av.visitEnd()
}
fun writeSyntheticClassMetadata(cb: ClassBuilder, kind: KotlinClassHeader.SyntheticClassKind?) {
writeKotlinMetadata(cb, KotlinClassHeader.Kind.SYNTHETIC_CLASS) { av ->
if (kind != null) {
av.visit(JvmAnnotationNames.SYNTHETIC_CLASS_KIND_FIELD_NAME, kind.id)
}
}
}
@@ -1,3 +1,4 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class Example {
private field prop2: int
@@ -1,3 +1,4 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class A {
private final @AnnField @AnnParameterField @AnnTypeField field a: int
@@ -12,45 +13,53 @@ public final class A {
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnField
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnFieldProperty
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnParameterField
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnParameterProperty
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnProperty
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnTypeField
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class Anno
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFileFacade
public final class DefaultTargetsKt {
private final static @Anno field p2: int
@@ -1,22 +1,26 @@
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class ClsAnn
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class ExprAnn
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class FunAnn
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFunction
final class LiteralsKt$foo$1 {
synthetic final field $arg: int
@@ -27,6 +31,7 @@ final class LiteralsKt$foo$1 {
}
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFunction
final class LiteralsKt$foo$2 {
synthetic final field $arg: int
@@ -37,6 +42,7 @@ final class LiteralsKt$foo$2 {
}
@kotlin.jvm.internal.KotlinLocalClass
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class LiteralsKt$foo$3 {
inner class LiteralsKt$foo$3
@@ -44,6 +50,7 @@ public final class LiteralsKt$foo$3 {
}
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFunction
final class LiteralsKt$foo$x$1 {
synthetic final field $arg: int
@@ -53,6 +60,7 @@ final class LiteralsKt$foo$x$1 {
public synthetic method invoke(): java.lang.Object
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFileFacade
public final class LiteralsKt {
inner class LiteralsKt$foo$1
@@ -63,6 +71,7 @@ public final class LiteralsKt {
public final static @org.jetbrains.annotations.NotNull method foo(p0: int): My
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public class My {
public method <init>(): void
@@ -1,3 +1,4 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class A {
private synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
@@ -19,33 +20,41 @@ public final class A {
}
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnDelegate
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnField
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnGetter
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnParam
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnProp
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnProp2
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnSetter
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class CustomDelegate {
public method <init>(): void
@@ -1,3 +1,4 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class A {
public method <init>(): void
@@ -6,9 +7,11 @@ public final class A {
}
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class Ann
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFileFacade
public final class OnReceiverKt {
public final static @org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
@@ -1,11 +1,14 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class B {
public abstract method foo(): void
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class C {
public abstract method getBar(): int
@@ -13,23 +16,27 @@ public abstract class C {
@kotlin.jvm.internal.KotlinInterfaceDefaultImpls
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
public final class D$DefaultImpls {
inner class D$DefaultImpls
public static method baz(p0: D): int
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class D {
inner class D$DefaultImpls
public abstract method baz(): int
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class E$InsideE {
inner class E$InsideE
public method <init>(): void
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class E {
inner class E$InsideE
@@ -1,3 +1,4 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class Foo {
public method <init>(): void
@@ -6,6 +7,7 @@ public final class Foo {
private final @kotlin.jvm.internal.InlineOnly method foo(): void
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFileFacade
public final class InlineOnlyKt {
public final static method bar(): void
@@ -1,3 +1,4 @@
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A1 {
public method <init>(): void
@@ -10,6 +11,7 @@ public abstract class A1 {
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A2 {
public method <init>(): void
@@ -24,6 +26,7 @@ public abstract class A2 {
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A3 {
public method <init>(): void
@@ -37,6 +40,7 @@ public abstract class A3 {
public final method size(): int
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A4 {
public method <init>(): void
@@ -51,6 +55,7 @@ public abstract class A4 {
public final method size(): int
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A5 {
public method <init>(): void
@@ -68,6 +73,7 @@ public abstract class A5 {
public final method size(): int
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A6 {
public method <init>(): void
@@ -86,6 +92,7 @@ public abstract class A6 {
public final method size(): int
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A7 {
public method <init>(): void
@@ -99,6 +106,7 @@ public abstract class A7 {
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class A8 {
public method <init>(): void
@@ -112,12 +120,14 @@ public abstract class A8 {
@kotlin.jvm.internal.KotlinInterfaceDefaultImpls
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
public final class I1$DefaultImpls {
inner class I1$DefaultImpls
public static method contains(p0: I1, p1: java.lang.Object): boolean
public static method containsAll(@org.jetbrains.annotations.NotNull p0: I1, p1: java.util.Collection): boolean
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class I1 {
inner class I1$DefaultImpls
@@ -129,12 +139,14 @@ public abstract class I1 {
@kotlin.jvm.internal.KotlinInterfaceDefaultImpls
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
public final class I2$DefaultImpls {
inner class I2$DefaultImpls
public static method contains(@org.jetbrains.annotations.NotNull p0: I2, p1: java.lang.String): boolean
public static method containsAll(@org.jetbrains.annotations.NotNull p0: I2, p1: java.util.Collection): boolean
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class I2 {
inner class I2$DefaultImpls