Use internal names in multifile class metadata

To reuse the strings already existing in the constant pool of the class file
This commit is contained in:
Alexander Udalov
2015-10-01 20:59:56 +03:00
parent e1ccb92438
commit bdd69d9e46
6 changed files with 14 additions and 35 deletions
@@ -89,9 +89,6 @@ public fun findMultifileClassParts(file: VirtualFile, multifileClass: KotlinJvmB
val partsFinder = DirectoryBasedClassFinder(file.parent!!, packageFqName)
val partNames = multifileClass.classHeader.filePartClassNames ?: return emptyList()
return partNames.map {
partsFinder.findKotlinClass(ClassId(packageFqName, Name.identifier(it)))
partsFinder.findKotlinClass(ClassId(packageFqName, Name.identifier(it.substringAfterLast('/'))))
}.filterNotNull()
}
public fun readMultifileClassPartHeaders(file: VirtualFile, multifileClass: KotlinJvmBinaryClass): List<KotlinClassHeader> =
findMultifileClassParts(file, multifileClass).map { it.classHeader }
@@ -80,7 +80,7 @@ fun createMultifileClassStub(
components: ClsStubBuilderComponents
): KotlinFileStubImpl {
val packageFqName = facadeFqName.parent()
val partNames = multifileClass.classHeader.filePartClassNames?.asList()
val partNames = multifileClass.classHeader.filePartClassNames?.asList()?.map { it.substringAfterLast('/') }
val fileStub = KotlinFileStubForIde.forMultifileClassStub(facadeFqName, partNames, packageFqName.isRoot)
setupFileStub(fileStub, packageFqName)
for (partFile in partFiles) {