KT-11410: generate light classes from multifile class parts in binaries

if explicitly requested by fqName
This commit is contained in:
Dmitry Petrov
2016-03-24 17:20:25 +03:00
parent 4c4141ea49
commit 92ddbb271a
4 changed files with 27 additions and 1 deletions
@@ -174,6 +174,24 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
}
}
override fun getMultifilePartClasses(partFqName: FqName, scope: GlobalSearchScope): Collection<PsiClass> {
val facadeKtFiles = StaticFacadeIndexUtil.getMultifileClassForPart(partFqName, scope, project)
val partShortName = partFqName.shortName().asString()
val partClassFileShortName = partShortName + ".class"
return facadeKtFiles.mapNotNull { facadeKtFile ->
if (facadeKtFile is KtClsFile) {
val partClassFile = facadeKtFile.virtualFile.parent.findChild(partClassFileShortName) ?: return@mapNotNull null
val javaClsClass = createClsJavaClassFromVirtualFile(facadeKtFile, partClassFile, null) ?: return@mapNotNull null
KtLightClassForDecompiledDeclaration(javaClsClass, null, facadeKtFile)
}
else {
// TODO should we build light classes for parts from source?
null
}
}
}
fun createLightClassForFileFacade(
facadeFqName: FqName,
facadeFiles: List<KtFile>,