Write package_fq_name to for Package message when serializing builtins

This commit is contained in:
Pavel V. Talanov
2015-12-07 16:31:45 +03:00
parent f05de6d6eb
commit e458534c93
2 changed files with 5 additions and 1 deletions
@@ -37,6 +37,8 @@ public class BuiltInsSerializerExtension : SerializerExtension() {
} }
override fun serializePackage(packageFragments: Collection<PackageFragmentDescriptor>, proto: ProtoBuf.Package.Builder) { override fun serializePackage(packageFragments: Collection<PackageFragmentDescriptor>, proto: ProtoBuf.Package.Builder) {
if (packageFragments.isEmpty()) return
val classes = packageFragments.flatMap { val classes = packageFragments.flatMap {
it.getMemberScope().getContributedDescriptors(DescriptorKindFilter.CLASSIFIERS).filterIsInstance<ClassDescriptor>() it.getMemberScope().getContributedDescriptors(DescriptorKindFilter.CLASSIFIERS).filterIsInstance<ClassDescriptor>()
} }
@@ -44,6 +46,8 @@ public class BuiltInsSerializerExtension : SerializerExtension() {
for (descriptor in DescriptorSerializer.sort(classes)) { for (descriptor in DescriptorSerializer.sort(classes)) {
proto.addExtension(BuiltInsProtoBuf.className, stringTable.getSimpleNameIndex(descriptor.name)) proto.addExtension(BuiltInsProtoBuf.className, stringTable.getSimpleNameIndex(descriptor.name))
} }
proto.setExtension(BuiltInsProtoBuf.packageFqName, stringTable.getPackageFqNameIndex(packageFragments.first().fqName))
} }
override fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder) { override fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder) {
@@ -100,7 +100,7 @@ public class StringTableImpl implements StringTable {
return qualifiedNames.intern(new FqNameProto(builder)); return qualifiedNames.intern(new FqNameProto(builder));
} }
private int getPackageFqNameIndex(@NotNull FqName fqName) { public int getPackageFqNameIndex(@NotNull FqName fqName) {
int result = -1; int result = -1;
for (Name segment : fqName.pathSegments()) { for (Name segment : fqName.pathSegments()) {
QualifiedName.Builder builder = QualifiedName.newBuilder(); QualifiedName.Builder builder = QualifiedName.newBuilder();