Write JVM signatures to new protobuf messages

This commit is contained in:
Alexander Udalov
2015-09-30 18:58:29 +03:00
parent 06a7ca5571
commit 8c0a86617a
14 changed files with 530 additions and 146 deletions
@@ -60,14 +60,18 @@ public object JvmFileClassUtil {
@JvmStatic
public fun getPartFqNameForDeserializedCallable(callable: DeserializedCallableMemberDescriptor): FqName {
val implClassName = getImplClassName(callable)
val implClassName = getImplClassName(callable) ?: error("No implClassName for $callable")
val packageFqName = (callable.containingDeclaration as PackageFragmentDescriptor).fqName
return packageFqName.child(implClassName)
}
@JvmStatic
public fun getImplClassName(callable: DeserializedCallableMemberDescriptor): Name =
callable.nameResolver.getName(callable.proto.getExtension(JvmProtoBuf.implClassName))
public fun getImplClassName(callable: DeserializedCallableMemberDescriptor): Name? =
with(callable) {
if (proto.hasExtension(JvmProtoBuf.oldImplClassName))
nameResolver.getName(proto.getExtension(JvmProtoBuf.oldImplClassName))
else null
}
@JvmStatic
public fun getHiddenPartFqName(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): FqName =
@@ -168,7 +168,7 @@ public class IncrementalPackageFragmentProvider(
) {
override fun filteredMemberProtos(allMemberProtos: Collection<ProtoBuf.Callable>): Collection<ProtoBuf.Callable> {
fun getPackagePart(callable: ProtoBuf.Callable) =
callable.getExtension(JvmProtoBuf.implClassName)?.let { packageData.nameResolver.getName(it) }
callable.getExtension(JvmProtoBuf.oldImplClassName)?.let { packageData.nameResolver.getName(it) }
fun shouldSkipPackagePart(name: Name) =
JvmClassName.byFqNameWithoutInnerClasses(fqName.child(name)).getInternalName() in obsoletePackageParts