KT-44250 [Sealed interfaces]: completion fails for 'when' with sealed

This commit is contained in:
Andrei Klunnyi
2021-01-18 15:55:38 +01:00
committed by Space
parent 14108011ee
commit 77ffc318f2
@@ -31,7 +31,7 @@ object IdeSealedClassInheritorsProvider : SealedClassInheritorsProvider() {
val module = sealedKtClass.module ?: return emptyList()
val moduleSourceScope = GlobalSearchScope.moduleScope(module)
val containingPackage = sealedClass.containingPackage() ?: return emptyList()
val psiPackage = JavaDirectoryService.getInstance().getPackage(sealedKtClass.containingFile.containingDirectory)
val psiPackage = getPackageViaDirectoryService(sealedKtClass)
?: JavaPsiFacade.getInstance(sealedKtClass.project).findPackage(containingPackage.asString())
?: return emptyList()
val packageScope = PackageScope(psiPackage, false, false)
@@ -50,4 +50,9 @@ object IdeSealedClassInheritorsProvider : SealedClassInheritorsProvider() {
}.filterNotNull()
.sortedBy(ClassDescriptor::getName) // order needs to be stable (at least for tests)
}
private fun getPackageViaDirectoryService(ktClass: KtClass): PsiPackage? {
val directory = ktClass.containingFile.containingDirectory ?: return null
return JavaDirectoryService.getInstance().getPackage(directory)
}
}