From 004f607270f6c37052a5ddb456000756d1a24f7c Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Thu, 7 May 2026 19:56:22 +0530 Subject: [PATCH] fix: ensure KtSymbolIndex.getKtFile returns null for non-Kotlin files Signed-off-by: Akash Yadav --- .../androidide/lsp/kotlin/compiler/index/KtSymbolIndex.kt | 4 +++- .../lsp/kotlin/compiler/services/DeclarationsProvider.kt | 2 +- .../lsp/kotlin/compiler/services/DirectInheritorsProvider.kt | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/index/KtSymbolIndex.kt b/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/index/KtSymbolIndex.kt index 7f0c9118ca..5449efcd76 100644 --- a/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/index/KtSymbolIndex.kt +++ b/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/index/KtSymbolIndex.kt @@ -5,6 +5,7 @@ import com.itsaky.androidide.lsp.kotlin.compiler.CompilationKind import com.itsaky.androidide.lsp.kotlin.compiler.modules.KtModule import com.itsaky.androidide.lsp.kotlin.compiler.read import com.itsaky.androidide.lsp.kotlin.utils.toVirtualFileOrNull +import com.itsaky.androidide.utils.DocumentUtils import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -172,8 +173,9 @@ internal class KtSymbolIndex( fun getOpenedKtFile(path: Path) = openedFiles[path] - fun getKtFile(vf: VirtualFile): KtFile { + fun getKtFile(vf: VirtualFile): KtFile? { val path = vf.toNioPath() + if (!DocumentUtils.isKotlinFile(path)) return null openedFiles[path]?.also { return it } ktFileCache.getIfPresent(path)?.also { return it } diff --git a/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DeclarationsProvider.kt b/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DeclarationsProvider.kt index c3973b394d..f7c0e271e6 100644 --- a/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DeclarationsProvider.kt +++ b/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DeclarationsProvider.kt @@ -180,6 +180,6 @@ internal class DeclarationProvider( return index.filesForPackage(fqName.asString()) .mapNotNull { VirtualFileManager.getInstance().findFileByNioPath(Paths.get(it.filePath)) } .filter { it in scope } - .map { index.getKtFile(it) } + .mapNotNull { index.getKtFile(it) } } } diff --git a/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DirectInheritorsProvider.kt b/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DirectInheritorsProvider.kt index 7036744413..df24ee2918 100644 --- a/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DirectInheritorsProvider.kt +++ b/lsp/kotlin/src/main/java/com/itsaky/androidide/lsp/kotlin/compiler/services/DirectInheritorsProvider.kt @@ -82,7 +82,7 @@ internal class DirectInheritorsProvider: KtLspService, KotlinDirectInheritorsPro modules .asFlatSequence() .filter { it.isSourceModule }.flatMap { it.computeFiles(extended = true) } - .map { index.getKtFile(it) } + .mapNotNull { index.getKtFile(it) } .forEach { ktFile -> ktFile.accept(object : KtTreeVisitorVoid() { override fun visitClassOrObject(classOrObject: KtClassOrObject) {