Split KotlinInfo annotation into two: KotlinClass and KotlinPackage

Two annotations are needed to properly distinguish package classes
This commit is contained in:
Pavel V. Talanov
2013-07-05 20:55:35 +04:00
committed by Alexander Udalov
parent 8a508fe938
commit 977cd7608a
12 changed files with 95 additions and 51 deletions
@@ -226,7 +226,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
ClassData data = new ClassData(createNameResolver(serializer.getNameTable()), classProto);
AnnotationVisitor av = v.getVisitor().visitAnnotation(JvmStdlibNames.KOTLIN_INFO_CLASS.getDescriptor(), true);
AnnotationVisitor av = v.getVisitor().visitAnnotation(JvmStdlibNames.KOTLIN_CLASS.getDescriptor(), true);
av.visit(JvmStdlibNames.ABI_VERSION_NAME, JvmAbi.VERSION);
AnnotationVisitor array = av.visitArray(JvmStdlibNames.KOTLIN_INFO_DATA_FIELD);
for (String string : JavaProtoBufUtil.encodeBytes(data.toBytes())) {
@@ -129,12 +129,12 @@ public class NamespaceCodegen extends MemberCodegen {
}
}
writeKotlinInfoIfNeeded(MemberMap.union(namespaceMembers));
writeKotlinPackageAnnotationIfNeeded(MemberMap.union(namespaceMembers));
assert v.isActivated() == shouldGenerateNSClass(files) : "Different algorithms for generating namespace class and for heuristics";
}
private void writeKotlinInfoIfNeeded(@NotNull MemberMap members) {
private void writeKotlinPackageAnnotationIfNeeded(@NotNull MemberMap members) {
DescriptorSerializer serializer = new DescriptorSerializer(new JavaSerializerExtension(members));
ProtoBuf.Package.Builder packageProto = ProtoBuf.Package.newBuilder();
boolean writeAnnotation = false;
@@ -168,7 +168,7 @@ public class NamespaceCodegen extends MemberCodegen {
PackageData data = new PackageData(createNameResolver(serializer.getNameTable()), packageProto.build());
AnnotationVisitor av = v.getClassBuilder().newAnnotation(JvmStdlibNames.KOTLIN_INFO_CLASS.getDescriptor(), true);
AnnotationVisitor av = v.getClassBuilder().newAnnotation(JvmStdlibNames.KOTLIN_PACKAGE.getDescriptor(), true);
av.visit(JvmStdlibNames.ABI_VERSION_NAME, JvmAbi.VERSION);
AnnotationVisitor array = av.visitArray(JvmStdlibNames.KOTLIN_INFO_DATA_FIELD);
for (String string : JavaProtoBufUtil.encodeBytes(data.toBytes())) {