Write module name as proto extension instead of another annotation argument
This commit is contained in:
@@ -785,7 +785,6 @@ public class AsmUtil {
|
|||||||
public static void writeKotlinSyntheticClassAnnotation(@NotNull ClassBuilder v, @NotNull GenerationState state) {
|
public static void writeKotlinSyntheticClassAnnotation(@NotNull ClassBuilder v, @NotNull GenerationState state) {
|
||||||
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(KOTLIN_SYNTHETIC_CLASS), true);
|
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(KOTLIN_SYNTHETIC_CLASS), true);
|
||||||
JvmCodegenUtil.writeAbiVersion(av);
|
JvmCodegenUtil.writeAbiVersion(av);
|
||||||
JvmCodegenUtil.writeModuleName(av, state);
|
|
||||||
av.visitEnd();
|
av.visitEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ import java.util.List;
|
|||||||
|
|
||||||
import static org.jetbrains.kotlin.codegen.AsmUtil.*;
|
import static org.jetbrains.kotlin.codegen.AsmUtil.*;
|
||||||
import static org.jetbrains.kotlin.codegen.ExpressionCodegen.generateClassLiteralReference;
|
import static org.jetbrains.kotlin.codegen.ExpressionCodegen.generateClassLiteralReference;
|
||||||
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.*;
|
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isConst;
|
||||||
|
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeAbiVersion;
|
||||||
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.CLOSURE;
|
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.CLOSURE;
|
||||||
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.asmTypeForAnonymousClass;
|
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.asmTypeForAnonymousClass;
|
||||||
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.*;
|
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.*;
|
||||||
@@ -222,9 +223,7 @@ public class ClosureCodegen extends MemberCodegen<KtElement> {
|
|||||||
writeKotlinSyntheticClassAnnotation(v, state);
|
writeKotlinSyntheticClassAnnotation(v, state);
|
||||||
|
|
||||||
final DescriptorSerializer serializer =
|
final DescriptorSerializer serializer =
|
||||||
DescriptorSerializer.createForLambda(
|
DescriptorSerializer.createForLambda(new JvmSerializerExtension(v.getSerializationBindings(), state));
|
||||||
new JvmSerializerExtension(v.getSerializationBindings(), typeMapper, state.getUseTypeTableInSerializer())
|
|
||||||
);
|
|
||||||
|
|
||||||
final ProtoBuf.Function functionProto = serializer.functionProto(funDescriptor).build();
|
final ProtoBuf.Function functionProto = serializer.functionProto(funDescriptor).build();
|
||||||
|
|
||||||
@@ -240,7 +239,6 @@ public class ClosureCodegen extends MemberCodegen<KtElement> {
|
|||||||
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FUNCTION), true);
|
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FUNCTION), true);
|
||||||
writeAbiVersion(av);
|
writeAbiVersion(av);
|
||||||
writeAnnotationData(av, serializer, functionProto, true);
|
writeAnnotationData(av, serializer, functionProto, true);
|
||||||
writeModuleName(av, state);
|
|
||||||
av.visitEnd();
|
av.visitEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -252,9 +252,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final DescriptorSerializer serializer =
|
final DescriptorSerializer serializer =
|
||||||
DescriptorSerializer.create(descriptor, new JvmSerializerExtension(
|
DescriptorSerializer.create(descriptor, new JvmSerializerExtension(v.getSerializationBindings(), state));
|
||||||
v.getSerializationBindings(), typeMapper, state.getUseTypeTableInSerializer()
|
|
||||||
));
|
|
||||||
|
|
||||||
final ProtoBuf.Class classProto = serializer.classProto(descriptor).build();
|
final ProtoBuf.Class classProto = serializer.classProto(descriptor).build();
|
||||||
|
|
||||||
@@ -272,7 +270,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_CLASS), true);
|
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_CLASS), true);
|
||||||
writeAbiVersion(av);
|
writeAbiVersion(av);
|
||||||
writeAnnotationData(av, serializer, classProto, true);
|
writeAnnotationData(av, serializer, classProto, true);
|
||||||
writeModuleName(av, state);
|
|
||||||
av.visitEnd();
|
av.visitEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,10 +28,8 @@ import org.jetbrains.kotlin.codegen.context.CodegenContext;
|
|||||||
import org.jetbrains.kotlin.codegen.context.FacadePartWithSourceFile;
|
import org.jetbrains.kotlin.codegen.context.FacadePartWithSourceFile;
|
||||||
import org.jetbrains.kotlin.codegen.context.MethodContext;
|
import org.jetbrains.kotlin.codegen.context.MethodContext;
|
||||||
import org.jetbrains.kotlin.codegen.context.RootContext;
|
import org.jetbrains.kotlin.codegen.context.RootContext;
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
|
||||||
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
|
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi;
|
|
||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
|
||||||
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion;
|
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion;
|
||||||
import org.jetbrains.kotlin.load.kotlin.ModuleMapping;
|
import org.jetbrains.kotlin.load.kotlin.ModuleMapping;
|
||||||
@@ -226,11 +224,4 @@ public class JvmCodegenUtil {
|
|||||||
public static void writeAbiVersion(@NotNull AnnotationVisitor av) {
|
public static void writeAbiVersion(@NotNull AnnotationVisitor av) {
|
||||||
av.visit(JvmAnnotationNames.VERSION_FIELD_NAME, JvmMetadataVersion.INSTANCE.toArray());
|
av.visit(JvmAnnotationNames.VERSION_FIELD_NAME, JvmMetadataVersion.INSTANCE.toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeModuleName(@NotNull AnnotationVisitor av, @NotNull GenerationState state) {
|
|
||||||
String name = state.getModuleName();
|
|
||||||
if (!name.equals(JvmAbi.DEFAULT_MODULE_NAME)) {
|
|
||||||
av.visit(JvmAnnotationNames.MODULE_NAME_FIELD_NAME, name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -289,7 +289,6 @@ class MultifileClassCodegen(
|
|||||||
|
|
||||||
val av = classBuilder.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_MULTIFILE_CLASS), true)
|
val av = classBuilder.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_MULTIFILE_CLASS), true)
|
||||||
JvmCodegenUtil.writeAbiVersion(av)
|
JvmCodegenUtil.writeAbiVersion(av)
|
||||||
JvmCodegenUtil.writeModuleName(av, state)
|
|
||||||
writePartNames(av, JvmAnnotationNames.FILE_PART_CLASS_NAMES_FIELD_NAME)
|
writePartNames(av, JvmAnnotationNames.FILE_PART_CLASS_NAMES_FIELD_NAME)
|
||||||
av.visitEnd()
|
av.visitEnd()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,11 +84,7 @@ class MultifileClassPartCodegen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val bindings = v.serializationBindings
|
val serializer = DescriptorSerializer.createTopLevel(JvmSerializerExtension(v.serializationBindings, state))
|
||||||
|
|
||||||
val serializer = DescriptorSerializer.createTopLevel(
|
|
||||||
JvmSerializerExtension(bindings, state.typeMapper, state.useTypeTableInSerializer)
|
|
||||||
)
|
|
||||||
val packageProto = serializer.packagePartProto(members).build()
|
val packageProto = serializer.packagePartProto(members).build()
|
||||||
|
|
||||||
writeKotlinMetadata(v, KotlinClassHeader.Kind.MULTIFILE_CLASS_PART) { av ->
|
writeKotlinMetadata(v, KotlinClassHeader.Kind.MULTIFILE_CLASS_PART) { av ->
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import kotlin.jvm.functions.Function1;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.codegen.annotation.AnnotatedSimple;
|
import org.jetbrains.kotlin.codegen.annotation.AnnotatedSimple;
|
||||||
import org.jetbrains.kotlin.codegen.context.FieldOwnerContext;
|
import org.jetbrains.kotlin.codegen.context.FieldOwnerContext;
|
||||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings;
|
|
||||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension;
|
import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension;
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||||
@@ -47,7 +46,6 @@ import java.util.List;
|
|||||||
import static org.jetbrains.kotlin.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses;
|
import static org.jetbrains.kotlin.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses;
|
||||||
import static org.jetbrains.kotlin.codegen.AsmUtil.writeAnnotationData;
|
import static org.jetbrains.kotlin.codegen.AsmUtil.writeAnnotationData;
|
||||||
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeAbiVersion;
|
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeAbiVersion;
|
||||||
import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.writeModuleName;
|
|
||||||
import static org.jetbrains.org.objectweb.asm.Opcodes.*;
|
import static org.jetbrains.org.objectweb.asm.Opcodes.*;
|
||||||
|
|
||||||
public class PackagePartCodegen extends MemberCodegen<KtFile> {
|
public class PackagePartCodegen extends MemberCodegen<KtFile> {
|
||||||
@@ -123,11 +121,8 @@ public class PackagePartCodegen extends MemberCodegen<KtFile> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JvmSerializationBindings bindings = v.getSerializationBindings();
|
final DescriptorSerializer serializer =
|
||||||
|
DescriptorSerializer.createTopLevel(new JvmSerializerExtension(v.getSerializationBindings(), state));
|
||||||
final DescriptorSerializer serializer = DescriptorSerializer.createTopLevel(new JvmSerializerExtension(
|
|
||||||
bindings, state.getTypeMapper(), state.getUseTypeTableInSerializer()
|
|
||||||
));
|
|
||||||
final 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>() {
|
WriteAnnotationUtilKt.writeKotlinMetadata(v, KotlinClassHeader.Kind.FILE_FACADE, new Function1<AnnotationVisitor, Unit>() {
|
||||||
@@ -141,7 +136,6 @@ public class PackagePartCodegen extends MemberCodegen<KtFile> {
|
|||||||
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FILE_FACADE), true);
|
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_FILE_FACADE), true);
|
||||||
writeAbiVersion(av);
|
writeAbiVersion(av);
|
||||||
writeAnnotationData(av, serializer, packageProto, true);
|
writeAnnotationData(av, serializer, packageProto, true);
|
||||||
writeModuleName(av, state);
|
|
||||||
av.visitEnd();
|
av.visitEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-4
@@ -19,9 +19,10 @@ package org.jetbrains.kotlin.codegen.serialization;
|
|||||||
import com.intellij.openapi.util.Pair;
|
import com.intellij.openapi.util.Pair;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
|
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
||||||
|
import org.jetbrains.kotlin.load.java.JvmAbi;
|
||||||
import org.jetbrains.kotlin.load.java.lazy.types.RawTypeCapabilities;
|
import org.jetbrains.kotlin.load.java.lazy.types.RawTypeCapabilities;
|
||||||
import org.jetbrains.kotlin.name.ClassId;
|
import org.jetbrains.kotlin.name.ClassId;
|
||||||
import org.jetbrains.kotlin.serialization.AnnotationSerializer;
|
import org.jetbrains.kotlin.serialization.AnnotationSerializer;
|
||||||
@@ -41,12 +42,14 @@ public class JvmSerializerExtension extends SerializerExtension {
|
|||||||
private final StringTable stringTable;
|
private final StringTable stringTable;
|
||||||
private final AnnotationSerializer annotationSerializer;
|
private final AnnotationSerializer annotationSerializer;
|
||||||
private final boolean useTypeTable;
|
private final boolean useTypeTable;
|
||||||
|
private final String moduleName;
|
||||||
|
|
||||||
public JvmSerializerExtension(@NotNull JvmSerializationBindings bindings, @NotNull JetTypeMapper typeMapper, boolean useTypeTable) {
|
public JvmSerializerExtension(@NotNull JvmSerializationBindings bindings, @NotNull GenerationState state) {
|
||||||
this.bindings = bindings;
|
this.bindings = bindings;
|
||||||
this.stringTable = new JvmStringTable(typeMapper);
|
this.stringTable = new JvmStringTable(state.getTypeMapper());
|
||||||
this.annotationSerializer = new AnnotationSerializer(stringTable);
|
this.annotationSerializer = new AnnotationSerializer(stringTable);
|
||||||
this.useTypeTable = useTypeTable;
|
this.useTypeTable = state.getUseTypeTableInSerializer();
|
||||||
|
this.moduleName = state.getModuleName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -60,6 +63,20 @@ public class JvmSerializerExtension extends SerializerExtension {
|
|||||||
return useTypeTable;
|
return useTypeTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serializeClass(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class.Builder proto) {
|
||||||
|
if (!moduleName.equals(JvmAbi.DEFAULT_MODULE_NAME)) {
|
||||||
|
proto.setExtension(JvmProtoBuf.classModuleName, stringTable.getStringIndex(moduleName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void serializePackage(@NotNull ProtoBuf.Package.Builder proto) {
|
||||||
|
if (!moduleName.equals(JvmAbi.DEFAULT_MODULE_NAME)) {
|
||||||
|
proto.setExtension(JvmProtoBuf.packageModuleName, stringTable.getStringIndex(moduleName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void serializeType(@NotNull KotlinType type, @NotNull ProtoBuf.Type.Builder proto) {
|
public void serializeType(@NotNull KotlinType type, @NotNull ProtoBuf.Type.Builder proto) {
|
||||||
// TODO: don't store type annotations in our binary metadata on Java 8, use *TypeAnnotations attributes instead
|
// TODO: don't store type annotations in our binary metadata on Java 8, use *TypeAnnotations attributes instead
|
||||||
|
|||||||
+3
-2
@@ -119,12 +119,13 @@ class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
|
|||||||
private val onFileWrite: (bytesWritten: Int) -> Unit
|
private val onFileWrite: (bytesWritten: Int) -> Unit
|
||||||
) {
|
) {
|
||||||
private val fqName = packageView.fqName
|
private val fqName = packageView.fqName
|
||||||
|
private val fragments = packageView.fragments
|
||||||
private val builtinsMessage = BuiltInsProtoBuf.BuiltIns.newBuilder()
|
private val builtinsMessage = BuiltInsProtoBuf.BuiltIns.newBuilder()
|
||||||
private val extension = BuiltInsSerializerExtension()
|
private val extension = BuiltInsSerializerExtension(fragments)
|
||||||
|
|
||||||
fun run() {
|
fun run() {
|
||||||
serializeClasses(packageView.memberScope)
|
serializeClasses(packageView.memberScope)
|
||||||
serializePackageFragments(packageView.fragments)
|
serializePackageFragments(fragments)
|
||||||
serializeStringTable()
|
serializeStringTable()
|
||||||
serializeBuiltInsFile()
|
serializeBuiltInsFile()
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -24,10 +24,12 @@ import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
|||||||
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
|
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||||
|
|
||||||
class BuiltInsSerializerExtension : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) {
|
class BuiltInsSerializerExtension(
|
||||||
|
private val packageFragments: Collection<PackageFragmentDescriptor>
|
||||||
|
) : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) {
|
||||||
override fun shouldUseTypeTable(): Boolean = true
|
override fun shouldUseTypeTable(): Boolean = true
|
||||||
|
|
||||||
override fun serializePackage(packageFragments: Collection<PackageFragmentDescriptor>, proto: ProtoBuf.Package.Builder) {
|
override fun serializePackage(proto: ProtoBuf.Package.Builder) {
|
||||||
if (packageFragments.isEmpty()) return
|
if (packageFragments.isEmpty()) return
|
||||||
|
|
||||||
val classes = packageFragments.flatMap {
|
val classes = packageFragments.flatMap {
|
||||||
|
|||||||
+3
-1
@@ -587,7 +587,7 @@ public class DescriptorSerializer {
|
|||||||
builder.setTypeTable(typeTableProto);
|
builder.setTypeTable(typeTableProto);
|
||||||
}
|
}
|
||||||
|
|
||||||
extension.serializePackage(fragments, builder);
|
extension.serializePackage(builder);
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
@@ -610,6 +610,8 @@ public class DescriptorSerializer {
|
|||||||
builder.setTypeTable(typeTableProto);
|
builder.setTypeTable(typeTableProto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension.serializePackage(builder);
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -20,8 +20,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
public abstract class SerializerExtension {
|
public abstract class SerializerExtension {
|
||||||
@NotNull
|
@NotNull
|
||||||
public abstract StringTable getStringTable();
|
public abstract StringTable getStringTable();
|
||||||
@@ -33,7 +31,7 @@ public abstract class SerializerExtension {
|
|||||||
public void serializeClass(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class.Builder proto) {
|
public void serializeClass(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class.Builder proto) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void serializePackage(@NotNull Collection<PackageFragmentDescriptor> packageFragments, @NotNull ProtoBuf.Package.Builder proto) {
|
public void serializePackage(@NotNull ProtoBuf.Package.Builder proto) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void serializeConstructor(@NotNull ConstructorDescriptor descriptor, @NotNull ProtoBuf.Constructor.Builder proto) {
|
public void serializeConstructor(@NotNull ConstructorDescriptor descriptor, @NotNull ProtoBuf.Constructor.Builder proto) {
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ public final class DebugJvmProtoBuf {
|
|||||||
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.isRaw);
|
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.isRaw);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.typeParameterAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.typeParameterAnnotation);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.classAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.classAnnotation);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.classModuleName);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf.packageModuleName);
|
||||||
}
|
}
|
||||||
public interface StringTableTypesOrBuilder
|
public interface StringTableTypesOrBuilder
|
||||||
extends com.google.protobuf.MessageOrBuilder {
|
extends com.google.protobuf.MessageOrBuilder {
|
||||||
@@ -4601,6 +4603,28 @@ public final class DebugJvmProtoBuf {
|
|||||||
.newFileScopedGeneratedExtension(
|
.newFileScopedGeneratedExtension(
|
||||||
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class,
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class,
|
||||||
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance());
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance());
|
||||||
|
public static final int CLASS_MODULE_NAME_FIELD_NUMBER = 101;
|
||||||
|
/**
|
||||||
|
* <code>extend .org.jetbrains.kotlin.serialization.Class { ... }</code>
|
||||||
|
*/
|
||||||
|
public static final
|
||||||
|
com.google.protobuf.GeneratedMessage.GeneratedExtension<
|
||||||
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Class,
|
||||||
|
java.lang.Integer> classModuleName = com.google.protobuf.GeneratedMessage
|
||||||
|
.newFileScopedGeneratedExtension(
|
||||||
|
java.lang.Integer.class,
|
||||||
|
null);
|
||||||
|
public static final int PACKAGE_MODULE_NAME_FIELD_NUMBER = 101;
|
||||||
|
/**
|
||||||
|
* <code>extend .org.jetbrains.kotlin.serialization.Package { ... }</code>
|
||||||
|
*/
|
||||||
|
public static final
|
||||||
|
com.google.protobuf.GeneratedMessage.GeneratedExtension<
|
||||||
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Package,
|
||||||
|
java.lang.Integer> packageModuleName = com.google.protobuf.GeneratedMessage
|
||||||
|
.newFileScopedGeneratedExtension(
|
||||||
|
java.lang.Integer.class,
|
||||||
|
null);
|
||||||
private static com.google.protobuf.Descriptors.Descriptor
|
private static com.google.protobuf.Descriptors.Descriptor
|
||||||
internal_static_org_jetbrains_kotlin_serialization_jvm_StringTableTypes_descriptor;
|
internal_static_org_jetbrains_kotlin_serialization_jvm_StringTableTypes_descriptor;
|
||||||
private static
|
private static
|
||||||
@@ -4683,7 +4707,11 @@ public final class DebugJvmProtoBuf {
|
|||||||
"ion:s\n\020class_annotation\022).org.jetbrains." +
|
"ion:s\n\020class_annotation\022).org.jetbrains." +
|
||||||
"kotlin.serialization.Class\030d \003(\0132..org.j" +
|
"kotlin.serialization.Class\030d \003(\0132..org.j" +
|
||||||
"etbrains.kotlin.serialization.Annotation" +
|
"etbrains.kotlin.serialization.Annotation" +
|
||||||
"B\022B\020DebugJvmProtoBuf"
|
":J\n\021class_module_name\022).org.jetbrains.ko" +
|
||||||
|
"tlin.serialization.Class\030e \001(\005B\004\230\265\030\001:N\n\023",
|
||||||
|
"package_module_name\022+.org.jetbrains.kotl" +
|
||||||
|
"in.serialization.Package\030e \001(\005B\004\230\265\030\001B\022B\020" +
|
||||||
|
"DebugJvmProtoBuf"
|
||||||
};
|
};
|
||||||
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
||||||
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
|
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
|
||||||
@@ -4727,12 +4755,16 @@ public final class DebugJvmProtoBuf {
|
|||||||
isRaw.internalInit(descriptor.getExtensions().get(4));
|
isRaw.internalInit(descriptor.getExtensions().get(4));
|
||||||
typeParameterAnnotation.internalInit(descriptor.getExtensions().get(5));
|
typeParameterAnnotation.internalInit(descriptor.getExtensions().get(5));
|
||||||
classAnnotation.internalInit(descriptor.getExtensions().get(6));
|
classAnnotation.internalInit(descriptor.getExtensions().get(6));
|
||||||
|
classModuleName.internalInit(descriptor.getExtensions().get(7));
|
||||||
|
packageModuleName.internalInit(descriptor.getExtensions().get(8));
|
||||||
com.google.protobuf.ExtensionRegistry registry =
|
com.google.protobuf.ExtensionRegistry registry =
|
||||||
com.google.protobuf.ExtensionRegistry.newInstance();
|
com.google.protobuf.ExtensionRegistry.newInstance();
|
||||||
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||||
return registry;
|
return registry;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -111,4 +111,11 @@ extend TypeParameter {
|
|||||||
|
|
||||||
extend Class {
|
extend Class {
|
||||||
repeated Annotation class_annotation = 100;
|
repeated Annotation class_annotation = 100;
|
||||||
|
|
||||||
|
// If absent, assumed to be JvmAbi.DEFAULT_MODULE_NAME
|
||||||
|
optional int32 class_module_name = 101 [(string_id_in_table) = true];
|
||||||
|
}
|
||||||
|
|
||||||
|
extend Package {
|
||||||
|
optional int32 package_module_name = 101 [(string_id_in_table) = true];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ public final class JvmAnnotationNames {
|
|||||||
public static final String METADATA_MULTIFILE_CLASS_NAME_FIELD_NAME = "xs";
|
public static final String METADATA_MULTIFILE_CLASS_NAME_FIELD_NAME = "xs";
|
||||||
public static final String DATA_FIELD_NAME = "data";
|
public static final String DATA_FIELD_NAME = "data";
|
||||||
public static final String STRINGS_FIELD_NAME = "strings";
|
public static final String STRINGS_FIELD_NAME = "strings";
|
||||||
public static final String MODULE_NAME_FIELD_NAME = "moduleName";
|
|
||||||
public static final Name DEFAULT_ANNOTATION_MEMBER_NAME = Name.identifier("value");
|
public static final Name DEFAULT_ANNOTATION_MEMBER_NAME = Name.identifier("value");
|
||||||
public static final Name DEPRECATED_ANNOTATION_MESSAGE = Name.identifier("message");
|
public static final Name DEPRECATED_ANNOTATION_MESSAGE = Name.identifier("message");
|
||||||
public static final Name TARGET_ANNOTATION_MEMBER_NAME = Name.identifier("allowedTargets");
|
public static final Name TARGET_ANNOTATION_MEMBER_NAME = Name.identifier("allowedTargets");
|
||||||
|
|||||||
+32
@@ -14,6 +14,8 @@ public final class JvmProtoBuf {
|
|||||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.isRaw);
|
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.isRaw);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.typeParameterAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.typeParameterAnnotation);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.classAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.classAnnotation);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.classModuleName);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.packageModuleName);
|
||||||
}
|
}
|
||||||
public interface StringTableTypesOrBuilder
|
public interface StringTableTypesOrBuilder
|
||||||
extends com.google.protobuf.MessageLiteOrBuilder {
|
extends com.google.protobuf.MessageLiteOrBuilder {
|
||||||
@@ -3816,6 +3818,36 @@ public final class JvmProtoBuf {
|
|||||||
100,
|
100,
|
||||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||||
false);
|
false);
|
||||||
|
public static final int CLASS_MODULE_NAME_FIELD_NUMBER = 101;
|
||||||
|
/**
|
||||||
|
* <code>extend .org.jetbrains.kotlin.serialization.Class { ... }</code>
|
||||||
|
*/
|
||||||
|
public static final
|
||||||
|
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Class,
|
||||||
|
java.lang.Integer> classModuleName = com.google.protobuf.GeneratedMessageLite
|
||||||
|
.newSingularGeneratedExtension(
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Class.getDefaultInstance(),
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
101,
|
||||||
|
com.google.protobuf.WireFormat.FieldType.INT32);
|
||||||
|
public static final int PACKAGE_MODULE_NAME_FIELD_NUMBER = 101;
|
||||||
|
/**
|
||||||
|
* <code>extend .org.jetbrains.kotlin.serialization.Package { ... }</code>
|
||||||
|
*/
|
||||||
|
public static final
|
||||||
|
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Package,
|
||||||
|
java.lang.Integer> packageModuleName = com.google.protobuf.GeneratedMessageLite
|
||||||
|
.newSingularGeneratedExtension(
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Package.getDefaultInstance(),
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
101,
|
||||||
|
com.google.protobuf.WireFormat.FieldType.INT32);
|
||||||
|
|
||||||
static {
|
static {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,12 +17,16 @@
|
|||||||
@file:JvmName("ReflectJvmMapping")
|
@file:JvmName("ReflectJvmMapping")
|
||||||
package kotlin.reflect.jvm
|
package kotlin.reflect.jvm
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClass
|
||||||
|
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf
|
||||||
|
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||||
import java.lang.reflect.*
|
import java.lang.reflect.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.jvm.internal.KotlinFileFacade
|
import kotlin.jvm.internal.KotlinFileFacade
|
||||||
import kotlin.jvm.internal.Reflection
|
import kotlin.jvm.internal.Reflection
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
import kotlin.reflect.jvm.internal.KCallableImpl
|
|
||||||
import kotlin.reflect.jvm.internal.KTypeImpl
|
import kotlin.reflect.jvm.internal.KTypeImpl
|
||||||
import kotlin.reflect.jvm.internal.asKCallableImpl
|
import kotlin.reflect.jvm.internal.asKCallableImpl
|
||||||
import kotlin.reflect.jvm.internal.asKPropertyImpl
|
import kotlin.reflect.jvm.internal.asKPropertyImpl
|
||||||
@@ -100,9 +104,19 @@ val Field.kotlinProperty: KProperty<*>?
|
|||||||
|
|
||||||
private fun Member.getKPackage(): KDeclarationContainer? {
|
private fun Member.getKPackage(): KDeclarationContainer? {
|
||||||
// TODO: support multifile classes
|
// TODO: support multifile classes
|
||||||
val fileFacade = declaringClass.getAnnotation(KotlinFileFacade::class.java)
|
return if (declaringClass.getAnnotation(KotlinFileFacade::class.java) != null) {
|
||||||
return if (fileFacade != null)
|
val header = ReflectKotlinClass.create(declaringClass)?.classHeader
|
||||||
Reflection.getOrCreateKotlinPackage(declaringClass, fileFacade.moduleName)
|
if (header != null && header.kind == KotlinClassHeader.Kind.FILE_FACADE && header.metadataVersion.isCompatible()) {
|
||||||
|
// TODO: avoid reading and parsing metadata twice (here and later in KPackageImpl#descriptor)
|
||||||
|
val (nameResolver, proto) = JvmProtoBufUtil.readPackageDataFrom(header.data!!, header.strings!!)
|
||||||
|
val moduleName =
|
||||||
|
if (proto.hasExtension(JvmProtoBuf.packageModuleName))
|
||||||
|
nameResolver.getString(proto.getExtension(JvmProtoBuf.packageModuleName))
|
||||||
|
else JvmAbi.DEFAULT_MODULE_NAME
|
||||||
|
Reflection.getOrCreateKotlinPackage(declaringClass, moduleName)
|
||||||
|
}
|
||||||
|
else null
|
||||||
|
}
|
||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,7 +135,7 @@ val Method.kotlinFunction: KFunction<*>?
|
|||||||
return kotlinPackage.members.filterIsInstance<KFunction<*>>().firstOrNull { it.javaMethod == this }
|
return kotlinPackage.members.filterIsInstance<KFunction<*>>().firstOrNull { it.javaMethod == this }
|
||||||
}
|
}
|
||||||
|
|
||||||
// For static bridge method generated for a jvmStatic function in the companion object, also try to find the latter
|
// For static bridge method generated for a @JvmStatic function in the companion object, also try to find the latter
|
||||||
val companion = declaringClass.kotlin.companionObject
|
val companion = declaringClass.kotlin.companionObject
|
||||||
if (companion != null) {
|
if (companion != null) {
|
||||||
companion.functions.firstOrNull {
|
companion.functions.firstOrNull {
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ package kotlin.reflect.jvm.internal
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.PrimitiveType
|
import org.jetbrains.kotlin.builtins.PrimitiveType
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
@@ -28,8 +27,6 @@ import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
|||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
|
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
|
||||||
import org.jetbrains.kotlin.load.java.structure.reflect.*
|
import org.jetbrains.kotlin.load.java.structure.reflect.*
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClass
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
@@ -39,6 +36,7 @@ import org.jetbrains.kotlin.serialization.ProtoBuf
|
|||||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
|
||||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf
|
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||||
@@ -46,7 +44,6 @@ import java.lang.reflect.Constructor
|
|||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.Member
|
import java.lang.reflect.Member
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import kotlin.jvm.internal.KotlinClass
|
|
||||||
import kotlin.reflect.KotlinReflectionInternalError
|
import kotlin.reflect.KotlinReflectionInternalError
|
||||||
|
|
||||||
internal sealed class JvmFunctionSignature {
|
internal sealed class JvmFunctionSignature {
|
||||||
@@ -113,15 +110,16 @@ internal sealed class JvmPropertySignature {
|
|||||||
else {
|
else {
|
||||||
val (name, desc) =
|
val (name, desc) =
|
||||||
JvmProtoBufUtil.getJvmFieldSignature(proto, nameResolver, typeTable) ?:
|
JvmProtoBufUtil.getJvmFieldSignature(proto, nameResolver, typeTable) ?:
|
||||||
throw KotlinReflectionInternalError("No field signature for property: $descriptor")
|
throw KotlinReflectionInternalError("No field signature for property: $descriptor")
|
||||||
|
|
||||||
val moduleSuffix =
|
val moduleSuffix =
|
||||||
if (descriptor.visibility == Visibilities.INTERNAL &&
|
if (descriptor.visibility == Visibilities.INTERNAL &&
|
||||||
descriptor.containingDeclaration is ClassDescriptor) {
|
descriptor.containingDeclaration is DeserializedClassDescriptor) {
|
||||||
val containingDeclaration = descriptor.containingDeclaration as ClassDescriptor
|
val classProto = (descriptor.containingDeclaration as DeserializedClassDescriptor).classProto
|
||||||
val sourceElement = containingDeclaration.source as KotlinJvmBinarySourceElement
|
val moduleName =
|
||||||
val klass = (sourceElement.binaryClass as ReflectKotlinClass).klass
|
if (classProto.hasExtension(JvmProtoBuf.classModuleName))
|
||||||
val moduleName = klass.getAnnotation(KotlinClass::class.java).moduleName
|
nameResolver.getString(classProto.getExtension(JvmProtoBuf.classModuleName))
|
||||||
|
else JvmAbi.DEFAULT_MODULE_NAME
|
||||||
"$" + JvmAbi.sanitizeAsJavaIdentifier(moduleName)
|
"$" + JvmAbi.sanitizeAsJavaIdentifier(moduleName)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -349,7 +349,7 @@ class GenerateProtoBufCompare {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun printOptionalField() {
|
override fun printOptionalField() {
|
||||||
p.println("if (old.hasExtension($fullFieldName) != new.hasExtension($fullFieldName)) return false")
|
p.println("if (old.hasExtension($fullFieldName) != new.hasExtension($fullFieldName)) $statement")
|
||||||
p.println("if (old.hasExtension($fullFieldName)) {")
|
p.println("if (old.hasExtension($fullFieldName)) {")
|
||||||
p.printlnIfWithComparisonIndent(field, "getExtension($fullFieldName)", statement)
|
p.printlnIfWithComparisonIndent(field, "getExtension($fullFieldName)", statement)
|
||||||
p.println("}")
|
p.println("}")
|
||||||
|
|||||||
@@ -44,12 +44,18 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR
|
|||||||
if (!checkEquals(old.typeTable, new.typeTable)) return false
|
if (!checkEquals(old.typeTable, new.typeTable)) return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old.hasExtension(JvmProtoBuf.packageModuleName) != new.hasExtension(JvmProtoBuf.packageModuleName)) return false
|
||||||
|
if (old.hasExtension(JvmProtoBuf.packageModuleName)) {
|
||||||
|
if (!checkStringEquals(old.getExtension(JvmProtoBuf.packageModuleName), new.getExtension(JvmProtoBuf.packageModuleName))) return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
enum class ProtoBufPackageKind {
|
enum class ProtoBufPackageKind {
|
||||||
FUNCTION_LIST,
|
FUNCTION_LIST,
|
||||||
PROPERTY_LIST,
|
PROPERTY_LIST,
|
||||||
TYPE_TABLE
|
TYPE_TABLE,
|
||||||
|
PACKAGE_MODULE_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
fun difference(old: ProtoBuf.Package, new: ProtoBuf.Package): EnumSet<ProtoBufPackageKind> {
|
fun difference(old: ProtoBuf.Package, new: ProtoBuf.Package): EnumSet<ProtoBufPackageKind> {
|
||||||
@@ -64,6 +70,11 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR
|
|||||||
if (!checkEquals(old.typeTable, new.typeTable)) result.add(ProtoBufPackageKind.TYPE_TABLE)
|
if (!checkEquals(old.typeTable, new.typeTable)) result.add(ProtoBufPackageKind.TYPE_TABLE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old.hasExtension(JvmProtoBuf.packageModuleName) != new.hasExtension(JvmProtoBuf.packageModuleName)) result.add(ProtoBufPackageKind.PACKAGE_MODULE_NAME)
|
||||||
|
if (old.hasExtension(JvmProtoBuf.packageModuleName)) {
|
||||||
|
if (!checkStringEquals(old.getExtension(JvmProtoBuf.packageModuleName), new.getExtension(JvmProtoBuf.packageModuleName))) result.add(ProtoBufPackageKind.PACKAGE_MODULE_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,6 +118,11 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR
|
|||||||
if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) return false
|
if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old.hasExtension(JvmProtoBuf.classModuleName) != new.hasExtension(JvmProtoBuf.classModuleName)) return false
|
||||||
|
if (old.hasExtension(JvmProtoBuf.classModuleName)) {
|
||||||
|
if (!checkStringEquals(old.getExtension(JvmProtoBuf.classModuleName), new.getExtension(JvmProtoBuf.classModuleName))) return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
enum class ProtoBufClassKind {
|
enum class ProtoBufClassKind {
|
||||||
@@ -122,7 +138,8 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR
|
|||||||
PROPERTY_LIST,
|
PROPERTY_LIST,
|
||||||
ENUM_ENTRY_LIST,
|
ENUM_ENTRY_LIST,
|
||||||
TYPE_TABLE,
|
TYPE_TABLE,
|
||||||
CLASS_ANNOTATION_LIST
|
CLASS_ANNOTATION_LIST,
|
||||||
|
CLASS_MODULE_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
fun difference(old: ProtoBuf.Class, new: ProtoBuf.Class): EnumSet<ProtoBufClassKind> {
|
fun difference(old: ProtoBuf.Class, new: ProtoBuf.Class): EnumSet<ProtoBufClassKind> {
|
||||||
@@ -167,6 +184,11 @@ open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameR
|
|||||||
if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) result.add(ProtoBufClassKind.CLASS_ANNOTATION_LIST)
|
if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) result.add(ProtoBufClassKind.CLASS_ANNOTATION_LIST)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old.hasExtension(JvmProtoBuf.classModuleName) != new.hasExtension(JvmProtoBuf.classModuleName)) result.add(ProtoBufClassKind.CLASS_MODULE_NAME)
|
||||||
|
if (old.hasExtension(JvmProtoBuf.classModuleName)) {
|
||||||
|
if (!checkStringEquals(old.getExtension(JvmProtoBuf.classModuleName), new.getExtension(JvmProtoBuf.classModuleName))) result.add(ProtoBufClassKind.CLASS_MODULE_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -804,6 +826,10 @@ fun ProtoBuf.Package.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int)
|
|||||||
hashCode = 31 * hashCode + typeTable.hashCode(stringIndexes, fqNameIndexes)
|
hashCode = 31 * hashCode + typeTable.hashCode(stringIndexes, fqNameIndexes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasExtension(JvmProtoBuf.packageModuleName)) {
|
||||||
|
hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.packageModuleName))
|
||||||
|
}
|
||||||
|
|
||||||
return hashCode
|
return hashCode
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -860,6 +886,10 @@ fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) ->
|
|||||||
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.classAnnotation, i).hashCode(stringIndexes, fqNameIndexes)
|
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.classAnnotation, i).hashCode(stringIndexes, fqNameIndexes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasExtension(JvmProtoBuf.classModuleName)) {
|
||||||
|
hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.classModuleName))
|
||||||
|
}
|
||||||
|
|
||||||
return hashCode
|
return hashCode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user