From 8c3df04c8ef62acc1b7d7d9b309c71172c55b403 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Sun, 12 Jun 2022 22:35:37 -0700 Subject: [PATCH] AA: null check containing file for PsiElement --- .../project/structure/impl/KtModuleProviderImpl.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleProviderImpl.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleProviderImpl.kt index 4c11abc8804..b9cdc26a71c 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleProviderImpl.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleProviderImpl.kt @@ -15,9 +15,15 @@ internal class KtModuleProviderImpl( internal val mainModules: List, ) : ProjectStructureProvider() { override fun getKtModuleForKtElement(element: PsiElement): KtModule { - val containingFile = element.containingFile.virtualFile + val containingFileAsPsiFile = element.containingFile + ?: error("Can't get containing PsiFile for ${element.text}") + // If an [element] is created on the fly, e.g., via [KtPsiFactory], + // its containing [PsiFile] may not have [VirtualFile]. + // That also means the [element] is not bound to any [KtModule] either. + val containingFileAsVirtualFile = containingFileAsPsiFile.virtualFile + ?: error("Can't get containing VirtualFile for ${element.text} in $containingFileAsPsiFile") return mainModules.first { module -> - containingFile in module.contentScope + containingFileAsVirtualFile in module.contentScope } }