[Analysis API] Generify 'KtCodeFragmentModule' to support ordinary files

This commit introduces dangling file modules, which may be either
code fragments or ordinary Kotlin files. As before, code fragments are
analyzed against some context element, however ordinary files only
have a context module.

Code fragments can also have a dangling file module as a contextual one,
including other code fragment. This is done to support potential usages
in completion, intentions and refactorings.
This commit is contained in:
Yan Zhulanow
2023-11-08 19:47:27 +09:00
committed by Space Team
parent 916e46debe
commit b7c774b9e5
16 changed files with 111 additions and 92 deletions
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.standalone.base.project.structure
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFileSystemItem
import org.jetbrains.kotlin.analysis.project.structure.*
import org.jetbrains.kotlin.analysis.project.structure.impl.KtCodeFragmentModuleImpl
import org.jetbrains.kotlin.analysis.project.structure.impl.KtDanglingFileModuleImpl
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.psiUtil.contains
@@ -31,7 +31,7 @@ class KtStaticModuleProvider(
.withAttachment("codeFragment.kt", containingPsiFile.text)
val contextModule = getModule(contextElement, contextualModule)
return KtCodeFragmentModuleImpl(containingPsiFile, contextModule)
return KtDanglingFileModuleImpl(containingPsiFile, contextModule)
}
val containingVirtualFile = containingPsiFile.virtualFile