KT-11410: generate light classes from multifile class parts in binaries
if explicitly requested by fqName
This commit is contained in:
+18
@@ -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>,
|
||||
|
||||
Reference in New Issue
Block a user