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 } }