[SLC] fix multifile-classes in multiplatform case

Multifile-class can contain not only files from the same
module, but also files from the common part.
This commit also fixes KotlinByModulesResolutionScopeProvider as
it should provide all transitive dependencies

^KT-64714 Fixed
This commit is contained in:
Dmitrii Gridin
2024-01-04 23:40:36 +01:00
committed by Space Team
parent fc519b2339
commit c14c12479c
5 changed files with 103 additions and 20 deletions
@@ -141,10 +141,22 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun createInstanceOfLightFacade(facadeFqName: FqName, files: List<KtFile>): KtLightClassForFacade? {
val module = files.first().getModuleIfSupportEnabled() ?: return null
return createInstanceOfLightFacade(facadeFqName, module, files)
}
override fun createInstanceOfLightFacade(facadeFqName: FqName, module: KtModule, files: List<KtFile>): KtLightClassForFacade? {
return SymbolLightClassForFacade(facadeFqName, files, module)
}
override val KtModule.contentSearchScope: GlobalSearchScope get() = this.contentScope
override val KtModule.contentSearchScope: GlobalSearchScope
get() = GlobalSearchScope.union(
buildList {
add(contentScope)
for (dependency in transitiveDependsOnDependencies) {
add(dependency.contentScope)
}
}
)
override fun facadeIsApplicable(module: KtModule, file: KtFile): Boolean =
module.isFromSourceOrLibraryBinary() && module.isLightClassesEnabled()