FIR IDE: rename AnalysisSessionFirImpl -> FirAnalysisSession

This commit is contained in:
Ilya Kirillov
2020-06-05 13:16:57 +03:00
parent 52a422350b
commit 71b916ae8f
9 changed files with 18 additions and 19 deletions
@@ -10,7 +10,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.idea.fir.highlighter.visitors.FirAfterResolveHighlightingVisitor import org.jetbrains.kotlin.idea.fir.highlighter.visitors.FirAfterResolveHighlightingVisitor
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
import org.jetbrains.kotlin.idea.highlighter.AbstractKotlinPsiChecker import org.jetbrains.kotlin.idea.highlighter.AbstractKotlinPsiChecker
import org.jetbrains.kotlin.idea.highlighter.Diagnostic2Annotation import org.jetbrains.kotlin.idea.highlighter.Diagnostic2Annotation
import org.jetbrains.kotlin.idea.highlighter.IdeErrorMessages import org.jetbrains.kotlin.idea.highlighter.IdeErrorMessages
@@ -24,7 +24,7 @@ class KotlinFirPsiChecker : AbstractKotlinPsiChecker() {
override fun annotateElement(element: PsiElement, containingFile: KtFile, holder: AnnotationHolder) { override fun annotateElement(element: PsiElement, containingFile: KtFile, holder: AnnotationHolder) {
if (element !is KtElement) return if (element !is KtElement) return
val analysisSession = AnalysisSessionFirImpl() val analysisSession = FirAnalysisSession()
highlightDiagnostics(element, analysisSession, holder) highlightDiagnostics(element, analysisSession, holder)
@@ -29,11 +29,11 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.model.KotlinTypeMarker
class AnalysisSessionFirImpl : FrontendAnalysisSession() { class FirAnalysisSession : FrontendAnalysisSession() {
override fun getSmartCastedToTypes(expression: KtExpression): Collection<KotlinTypeMarker>? { override fun getSmartCastedToTypes(expression: KtExpression): Collection<KotlinTypeMarker>? {
// TODO filter out not used smartcasts // TODO filter out not used smartcasts
return (expression.toFir() as? FirExpressionWithSmartcast)?.typesFromSmartCast return expression.getOrBuildFirSafe<FirExpressionWithSmartcast>()?.typesFromSmartCast
} }
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
@@ -6,10 +6,10 @@
package org.jetbrains.kotlin.idea.references package org.jetbrains.kotlin.idea.references
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
interface FirKtReference : KtReference { interface FirKtReference : KtReference {
fun getResolvedToPsi(analysisSession: AnalysisSessionFirImpl): Collection<PsiElement> fun getResolvedToPsi(analysisSession: FirAnalysisSession): Collection<PsiElement>
override val resolver get() = KtFirReferenceResolver override val resolver get() = KtFirReferenceResolver
} }
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.idea.references package org.jetbrains.kotlin.idea.references
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtImportAlias import org.jetbrains.kotlin.psi.KtImportAlias
import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.psi.KtSimpleNameExpression
internal class KtSimpleNameReferenceFirImpl( internal class KtSimpleNameReferenceFirImpl(
expression: KtSimpleNameExpression expression: KtSimpleNameExpression
) : KtSimpleNameReference(expression), FirKtReference { ) : KtSimpleNameReference(expression), FirKtReference {
override fun getResolvedToPsi(analysisSession: AnalysisSessionFirImpl) = FirReferenceResolveHelper.resolveSimpleNameReference(this) override fun getResolvedToPsi(analysisSession: FirAnalysisSession) = FirReferenceResolveHelper.resolveSimpleNameReference(this)
override fun doCanBeReferenceTo(candidateTarget: PsiElement): Boolean { override fun doCanBeReferenceTo(candidateTarget: PsiElement): Boolean {
return true // TODO return true // TODO
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.expressions.FirComponentCall import org.jetbrains.kotlin.fir.expressions.FirComponentCall
import org.jetbrains.kotlin.idea.fir.* import org.jetbrains.kotlin.idea.fir.*
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
import org.jetbrains.kotlin.psi.KtDestructuringDeclarationEntry import org.jetbrains.kotlin.psi.KtDestructuringDeclarationEntry
class KtDestructuringDeclarationReferenceFirImpl( class KtDestructuringDeclarationReferenceFirImpl(
@@ -18,7 +18,7 @@ class KtDestructuringDeclarationReferenceFirImpl(
override fun canRename(): Boolean = false //todo override fun canRename(): Boolean = false //todo
override fun getResolvedToPsi( override fun getResolvedToPsi(
analysisSession: AnalysisSessionFirImpl analysisSession: FirAnalysisSession
): Collection<PsiElement> { ): Collection<PsiElement> {
val fir = expression.getOrBuildFirSafe<FirProperty>() ?: return emptyList() val fir = expression.getOrBuildFirSafe<FirProperty>() ?: return emptyList()
val componentFunctionSymbol = (fir.initializer as? FirComponentCall)?.getCalleeSymbol() ?: return emptyList() val componentFunctionSymbol = (fir.initializer as? FirComponentCall)?.getCalleeSymbol() ?: return emptyList()
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementResolveResult import com.intellij.psi.PsiElementResolveResult
import com.intellij.psi.ResolveResult import com.intellij.psi.ResolveResult
import com.intellij.psi.impl.source.resolve.ResolveCache import com.intellij.psi.impl.source.resolve.ResolveCache
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> { object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element) class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element)
@@ -17,7 +17,7 @@ object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
override fun resolve(ref: KtReference, incompleteCode: Boolean): Array<ResolveResult> { override fun resolve(ref: KtReference, incompleteCode: Boolean): Array<ResolveResult> {
check(ref is FirKtReference) { "reference should be FirKtReference, but was ${ref::class}" } check(ref is FirKtReference) { "reference should be FirKtReference, but was ${ref::class}" }
check(ref is AbstractKtReference<*>) { "reference should be AbstractKtReference, but was ${ref::class}" } check(ref is AbstractKtReference<*>) { "reference should be AbstractKtReference, but was ${ref::class}" }
val analysisSession = AnalysisSessionFirImpl() val analysisSession = FirAnalysisSession()
val resolveToPsiElements = ref.getResolvedToPsi(analysisSession) val resolveToPsiElements = ref.getResolvedToPsi(analysisSession)
return resolveToPsiElements.map { KotlinResolveResult(it) }.toTypedArray() return resolveToPsiElements.map { KotlinResolveResult(it) }.toTypedArray()
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.idea.references package org.jetbrains.kotlin.idea.references
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
@@ -14,12 +13,12 @@ import org.jetbrains.kotlin.fir.expressions.FirWhileLoop
import org.jetbrains.kotlin.idea.fir.findPsi import org.jetbrains.kotlin.idea.fir.findPsi
import org.jetbrains.kotlin.idea.fir.getOrBuildFirSafe import org.jetbrains.kotlin.idea.fir.getOrBuildFirSafe
import org.jetbrains.kotlin.idea.fir.getResolvedSymbolOfNameReference import org.jetbrains.kotlin.idea.fir.getResolvedSymbolOfNameReference
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
import org.jetbrains.kotlin.psi.KtForExpression import org.jetbrains.kotlin.psi.KtForExpression
open class KtForLoopInReferenceFirImpl(expression: KtForExpression) : KtForLoopInReference(expression), FirKtReference { open class KtForLoopInReferenceFirImpl(expression: KtForExpression) : KtForLoopInReference(expression), FirKtReference {
override fun getResolvedToPsi( override fun getResolvedToPsi(
analysisSession: AnalysisSessionFirImpl analysisSession: FirAnalysisSession
): Collection<PsiElement> { ): Collection<PsiElement> {
val firLoop = expression.getOrBuildFirSafe<FirWhileLoop>() ?: return emptyList() val firLoop = expression.getOrBuildFirSafe<FirWhileLoop>() ?: return emptyList()
val condition = firLoop.condition as? FirFunctionCall val condition = firLoop.condition as? FirFunctionCall
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.references
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.idea.frontend.api.VariableAsFunctionLikeCallInfo import org.jetbrains.kotlin.idea.frontend.api.VariableAsFunctionLikeCallInfo
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtExpression
@@ -16,7 +16,7 @@ class KtInvokeFunctionReferenceFirImpl(expression: KtCallExpression) : KtInvokeF
TODO("Not yet implemented") TODO("Not yet implemented")
} }
override fun getResolvedToPsi(analysisSession: AnalysisSessionFirImpl): Collection<PsiElement> { override fun getResolvedToPsi(analysisSession: FirAnalysisSession): Collection<PsiElement> {
val call = analysisSession.resolveCall(expression) ?: return emptyList() val call = analysisSession.resolveCall(expression) ?: return emptyList()
if (call is VariableAsFunctionLikeCallInfo) { if (call is VariableAsFunctionLikeCallInfo) {
return listOf(call.invokeFunction) return listOf(call.invokeFunction)
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.idea.fir.* import org.jetbrains.kotlin.idea.fir.*
import org.jetbrains.kotlin.idea.frontend.api.fir.AnalysisSessionFirImpl import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtPropertyDelegate import org.jetbrains.kotlin.psi.KtPropertyDelegate
@@ -20,7 +20,7 @@ class KtPropertyDelegationMethodsReferenceFirImpl(
element: KtPropertyDelegate element: KtPropertyDelegate
) : KtPropertyDelegationMethodsReference(element), FirKtReference { ) : KtPropertyDelegationMethodsReference(element), FirKtReference {
override fun getResolvedToPsi( override fun getResolvedToPsi(
analysisSession: AnalysisSessionFirImpl analysisSession: FirAnalysisSession
): Collection<PsiElement> { ): Collection<PsiElement> {
val property = (expression.parent as? KtElement)?.getOrBuildFirSafe<FirProperty>() ?: return emptyList() val property = (expression.parent as? KtElement)?.getOrBuildFirSafe<FirProperty>() ?: return emptyList()
if (property.delegate == null) return emptyList() if (property.delegate == null) return emptyList()