FIR IDE: rename reference classes to KtFir*Reference for consistency
This commit is contained in:
@@ -11,8 +11,8 @@ import com.intellij.openapi.progress.ProcessCanceledException
|
|||||||
import com.intellij.psi.PsiElement
|
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.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
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
|
||||||
@@ -29,7 +29,7 @@ class KotlinFirPsiChecker : AbstractKotlinPsiChecker() {
|
|||||||
if (ApplicationManager.getApplication().isDispatchThread) {
|
if (ApplicationManager.getApplication().isDispatchThread) {
|
||||||
throw ProcessCanceledException()
|
throw ProcessCanceledException()
|
||||||
}
|
}
|
||||||
val analysisSession = FirAnalysisSession(element)
|
val analysisSession = KtFirAnalysisSession(element)
|
||||||
|
|
||||||
highlightDiagnostics(element, analysisSession, holder)
|
highlightDiagnostics(element, analysisSession, holder)
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ class KotlinFirPsiChecker : AbstractKotlinPsiChecker() {
|
|||||||
.forEach(element::accept)
|
.forEach(element::accept)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun highlightDiagnostics(element: KtElement, analysisSession: FrontendAnalysisSession, holder: AnnotationHolder) {
|
private fun highlightDiagnostics(element: KtElement, analysisSession: KtAnalysisSession, holder: AnnotationHolder) {
|
||||||
val diagnostics = analysisSession.getDiagnosticsForElement(element)
|
val diagnostics = analysisSession.getDiagnosticsForElement(element)
|
||||||
if (diagnostics.isEmpty()) return
|
if (diagnostics.isEmpty()) return
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.idea.fir.highlighter.visitors
|
|||||||
import com.intellij.lang.annotation.AnnotationHolder
|
import com.intellij.lang.annotation.AnnotationHolder
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle
|
import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ImplicitReceiverSmartcastKind
|
import org.jetbrains.kotlin.idea.frontend.api.ImplicitReceiverSmartcastKind
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
|
||||||
internal class ExpressionsSmartcastHighlightingVisitor(
|
internal class ExpressionsSmartcastHighlightingVisitor(
|
||||||
analysisSession: FrontendAnalysisSession,
|
analysisSession: KtAnalysisSession,
|
||||||
holder: AnnotationHolder
|
holder: AnnotationHolder
|
||||||
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
||||||
override fun visitExpression(expression: KtExpression) {
|
override fun visitExpression(expression: KtExpression) {
|
||||||
|
|||||||
+3
-3
@@ -6,17 +6,17 @@
|
|||||||
package org.jetbrains.kotlin.idea.fir.highlighter.visitors
|
package org.jetbrains.kotlin.idea.fir.highlighter.visitors
|
||||||
|
|
||||||
import com.intellij.lang.annotation.AnnotationHolder
|
import com.intellij.lang.annotation.AnnotationHolder
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.highlighter.HighlightingVisitor
|
import org.jetbrains.kotlin.idea.highlighter.HighlightingVisitor
|
||||||
|
|
||||||
abstract class FirAfterResolveHighlightingVisitor(
|
abstract class FirAfterResolveHighlightingVisitor(
|
||||||
protected val analysisSession: FrontendAnalysisSession,
|
protected val analysisSession: KtAnalysisSession,
|
||||||
protected val holder: AnnotationHolder
|
protected val holder: AnnotationHolder
|
||||||
) : HighlightingVisitor(holder) {
|
) : HighlightingVisitor(holder) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun createListOfVisitors(
|
fun createListOfVisitors(
|
||||||
analysisSession: FrontendAnalysisSession,
|
analysisSession: KtAnalysisSession,
|
||||||
holder: AnnotationHolder
|
holder: AnnotationHolder
|
||||||
): List<FirAfterResolveHighlightingVisitor> = listOf(
|
): List<FirAfterResolveHighlightingVisitor> = listOf(
|
||||||
TypeHighlightingVisitor(analysisSession, holder),
|
TypeHighlightingVisitor(analysisSession, holder),
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.serialization.deserialization.KOTLIN_SUSPEND_BUILT_I
|
|||||||
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors as Colors
|
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors as Colors
|
||||||
|
|
||||||
internal class FunctionCallHighlightingVisitor(
|
internal class FunctionCallHighlightingVisitor(
|
||||||
analysisSession: FrontendAnalysisSession,
|
analysisSession: KtAnalysisSession,
|
||||||
holder: AnnotationHolder
|
holder: AnnotationHolder
|
||||||
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
||||||
override fun visitBinaryExpression(expression: KtBinaryExpression) {
|
override fun visitBinaryExpression(expression: KtBinaryExpression) {
|
||||||
|
|||||||
+2
-2
@@ -11,14 +11,14 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.idea.fir.highlighter.isAnnotationClass
|
import org.jetbrains.kotlin.idea.fir.highlighter.isAnnotationClass
|
||||||
import org.jetbrains.kotlin.idea.fir.highlighter.textAttributesKeyForTypeDeclaration
|
import org.jetbrains.kotlin.idea.fir.highlighter.textAttributesKeyForTypeDeclaration
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.highlighter.NameHighlighter
|
import org.jetbrains.kotlin.idea.highlighter.NameHighlighter
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors as Colors
|
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors as Colors
|
||||||
|
|
||||||
internal class TypeHighlightingVisitor(
|
internal class TypeHighlightingVisitor(
|
||||||
analysisSession: FrontendAnalysisSession,
|
analysisSession: KtAnalysisSession,
|
||||||
holder: AnnotationHolder
|
holder: AnnotationHolder
|
||||||
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
||||||
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
|
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
|
||||||
|
|||||||
+2
-2
@@ -14,7 +14,7 @@ import com.intellij.psi.util.PsiUtilCore
|
|||||||
import com.intellij.psi.util.parentOfType
|
import com.intellij.psi.util.parentOfType
|
||||||
import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle
|
import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle
|
||||||
import org.jetbrains.kotlin.idea.fir.highlighter.textAttributesKeyForPropertyDeclaration
|
import org.jetbrains.kotlin.idea.fir.highlighter.textAttributesKeyForPropertyDeclaration
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.highlighter.NameHighlighter
|
import org.jetbrains.kotlin.idea.highlighter.NameHighlighter
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.psi.*
|
|||||||
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors as Colors
|
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors as Colors
|
||||||
|
|
||||||
internal class VariableReferenceHighlightingVisitor(
|
internal class VariableReferenceHighlightingVisitor(
|
||||||
analysisSession: FrontendAnalysisSession,
|
analysisSession: KtAnalysisSession,
|
||||||
holder: AnnotationHolder
|
holder: AnnotationHolder
|
||||||
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
) : FirAfterResolveHighlightingVisitor(analysisSession, holder) {
|
||||||
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
|
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
|
||||||
abstract class FrontendAnalysisSession(project: Project) : Invalidatable {
|
abstract class KtAnalysisSession(project: Project) : Invalidatable {
|
||||||
protected open val validityToken = ReadActionConfinementValidityToken(project)
|
protected open val validityToken = ReadActionConfinementValidityToken(project)
|
||||||
override fun isValid(): Boolean = validityToken.isValid()
|
override fun isValid(): Boolean = validityToken.isValid()
|
||||||
override fun invalidationReason(): String = validityToken.invalidationReason()
|
override fun invalidationReason(): String = validityToken.invalidationReason()
|
||||||
+3
-3
@@ -10,15 +10,15 @@ import org.jetbrains.kotlin.idea.references.KtReference
|
|||||||
import org.jetbrains.kotlin.idea.references.KtSimpleReference
|
import org.jetbrains.kotlin.idea.references.KtSimpleReference
|
||||||
|
|
||||||
interface KtSymbolBasedReference : KtReference {
|
interface KtSymbolBasedReference : KtReference {
|
||||||
fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol>
|
fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol>
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KtReference.resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol> {
|
fun KtReference.resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol> {
|
||||||
check(this is KtSymbolBasedReference) { "To get reference symbol the one should be KtSymbolBasedReference" }
|
check(this is KtSymbolBasedReference) { "To get reference symbol the one should be KtSymbolBasedReference" }
|
||||||
return resolveToSymbols(analysisSession)
|
return resolveToSymbols(analysisSession)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KtSimpleReference<*>.resolveToSymbol(analysisSession: FrontendAnalysisSession): KtSymbol? {
|
fun KtSimpleReference<*>.resolveToSymbol(analysisSession: KtAnalysisSession): KtSymbol? {
|
||||||
check(this is KtSymbolBasedReference) { "To get reference symbol the one should be KtSymbolBasedReference" }
|
check(this is KtSymbolBasedReference) { "To get reference symbol the one should be KtSymbolBasedReference" }
|
||||||
return resolveToSymbols(analysisSession).singleOrNull()
|
return resolveToSymbols(analysisSession).singleOrNull()
|
||||||
}
|
}
|
||||||
+4
-4
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.types.*
|
|||||||
import org.jetbrains.kotlin.idea.fir.*
|
import org.jetbrains.kotlin.idea.fir.*
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.LowLevelFirApiFacade
|
import org.jetbrains.kotlin.idea.fir.low.level.api.LowLevelFirApiFacade
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.*
|
import org.jetbrains.kotlin.idea.frontend.api.*
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.FirKtSymbolProvider
|
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbolProvider
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbolProvider
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbolProvider
|
||||||
@@ -32,9 +32,9 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
|
||||||
class FirAnalysisSession(
|
class KtFirAnalysisSession(
|
||||||
element: KtElement
|
element: KtElement
|
||||||
) : FrontendAnalysisSession(element.project) {
|
) : KtAnalysisSession(element.project) {
|
||||||
internal val token get() = validityToken
|
internal val token get() = validityToken
|
||||||
|
|
||||||
internal val firSymbolBuilder = KtSymbolByFirBuilder(
|
internal val firSymbolBuilder = KtSymbolByFirBuilder(
|
||||||
@@ -44,7 +44,7 @@ class FirAnalysisSession(
|
|||||||
)
|
)
|
||||||
|
|
||||||
override val symbolProvider: KtSymbolProvider =
|
override val symbolProvider: KtSymbolProvider =
|
||||||
FirKtSymbolProvider(
|
KtFirSymbolProvider(
|
||||||
this,
|
this,
|
||||||
element.session.firSymbolProvider,
|
element.session.firSymbolProvider,
|
||||||
firSymbolBuilder
|
firSymbolBuilder
|
||||||
+1
-1
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
|
||||||
internal class FirKtSymbolProvider(
|
internal class KtFirSymbolProvider(
|
||||||
override val token: Invalidatable,
|
override val token: Invalidatable,
|
||||||
firSymbolProvider: FirSymbolProvider,
|
firSymbolProvider: FirSymbolProvider,
|
||||||
private val firSymbolBuilder: KtSymbolByFirBuilder
|
private val firSymbolBuilder: KtSymbolByFirBuilder
|
||||||
+1
-1
@@ -82,7 +82,7 @@ internal object FirReferenceResolveHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun resolveSimpleNameReference(
|
internal fun resolveSimpleNameReference(
|
||||||
ref: KtSimpleNameReferenceFirImpl,
|
ref: KtFirSimpleNameReference,
|
||||||
symbolBuilder: KtSymbolByFirBuilder
|
symbolBuilder: KtSymbolByFirBuilder
|
||||||
): Collection<KtSymbol> {
|
): Collection<KtSymbol> {
|
||||||
val expression = ref.expression
|
val expression = ref.expression
|
||||||
|
|||||||
+6
-6
@@ -6,18 +6,18 @@
|
|||||||
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.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
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
|
||||||
|
|
||||||
internal class KtSimpleNameReferenceFirImpl(
|
internal class KtFirSimpleNameReference(
|
||||||
expression: KtSimpleNameExpression
|
expression: KtSimpleNameExpression
|
||||||
) : KtSimpleNameReference(expression), FirKtReference {
|
) : KtSimpleNameReference(expression), KtFirReference {
|
||||||
override fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol> {
|
override fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol> {
|
||||||
check(analysisSession is FirAnalysisSession)
|
check(analysisSession is KtFirAnalysisSession)
|
||||||
return FirReferenceResolveHelper.resolveSimpleNameReference(this, analysisSession.firSymbolBuilder)
|
return FirReferenceResolveHelper.resolveSimpleNameReference(this, analysisSession.firSymbolBuilder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -8,11 +8,11 @@ package org.jetbrains.kotlin.idea.references
|
|||||||
class KotlinFirReferenceContributor : KotlinReferenceProviderContributor {
|
class KotlinFirReferenceContributor : KotlinReferenceProviderContributor {
|
||||||
override fun registerReferenceProviders(registrar: KotlinPsiReferenceRegistrar) {
|
override fun registerReferenceProviders(registrar: KotlinPsiReferenceRegistrar) {
|
||||||
with(registrar) {
|
with(registrar) {
|
||||||
registerProvider(factory = ::KtSimpleNameReferenceFirImpl)
|
registerProvider(factory = ::KtFirSimpleNameReference)
|
||||||
registerProvider(factory = ::KtForLoopInReferenceFirImpl)
|
registerProvider(factory = ::KtFirForLoopInReference)
|
||||||
registerProvider(factory = ::KtInvokeFunctionReferenceFirImpl)
|
registerProvider(factory = ::KtFirInvokeFunctionReference)
|
||||||
registerProvider(factory = ::KtPropertyDelegationMethodsReferenceFirImpl)
|
registerProvider(factory = ::KtFirPropertyDelegationMethodsReference)
|
||||||
registerProvider(factory = ::KtDestructuringDeclarationReferenceFirImpl)
|
registerProvider(factory = ::KtFirDestructuringDeclarationReference)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -9,19 +9,19 @@ 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.getCalleeSymbol
|
import org.jetbrains.kotlin.idea.fir.getCalleeSymbol
|
||||||
import org.jetbrains.kotlin.idea.fir.getOrBuildFirSafe
|
import org.jetbrains.kotlin.idea.fir.getOrBuildFirSafe
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.psi.KtDestructuringDeclarationEntry
|
import org.jetbrains.kotlin.psi.KtDestructuringDeclarationEntry
|
||||||
|
|
||||||
class KtDestructuringDeclarationReferenceFirImpl(
|
class KtFirDestructuringDeclarationReference(
|
||||||
element: KtDestructuringDeclarationEntry
|
element: KtDestructuringDeclarationEntry
|
||||||
) : KtDestructuringDeclarationReference(element), FirKtReference {
|
) : KtDestructuringDeclarationReference(element), KtFirReference {
|
||||||
override fun canRename(): Boolean = false //todo
|
override fun canRename(): Boolean = false //todo
|
||||||
|
|
||||||
override fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol> {
|
override fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol> {
|
||||||
check(analysisSession is FirAnalysisSession)
|
check(analysisSession is KtFirAnalysisSession)
|
||||||
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()
|
||||||
return listOfNotNull(componentFunctionSymbol.fir.buildSymbol(analysisSession.firSymbolBuilder))
|
return listOfNotNull(componentFunctionSymbol.fir.buildSymbol(analysisSession.firSymbolBuilder))
|
||||||
+5
-6
@@ -11,16 +11,15 @@ import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirWhileLoop
|
import org.jetbrains.kotlin.fir.expressions.FirWhileLoop
|
||||||
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.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.psi.KtForExpression
|
import org.jetbrains.kotlin.psi.KtForExpression
|
||||||
|
|
||||||
open class KtForLoopInReferenceFirImpl(expression: KtForExpression) : KtForLoopInReference(expression), FirKtReference {
|
open class KtFirForLoopInReference(expression: KtForExpression) : KtForLoopInReference(expression), KtFirReference {
|
||||||
|
override fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol> {
|
||||||
override fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol> {
|
check(analysisSession is KtFirAnalysisSession)
|
||||||
check(analysisSession is FirAnalysisSession)
|
|
||||||
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
|
||||||
val iterator = run {
|
val iterator = run {
|
||||||
+3
-4
@@ -5,19 +5,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.references
|
package org.jetbrains.kotlin.idea.references
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.VariableAsFunctionLikeCallInfo
|
import org.jetbrains.kotlin.idea.frontend.api.VariableAsFunctionLikeCallInfo
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||||
import org.jetbrains.kotlin.psi.KtExpression
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
|
|
||||||
class KtInvokeFunctionReferenceFirImpl(expression: KtCallExpression) : KtInvokeFunctionReference(expression), FirKtReference {
|
class KtFirInvokeFunctionReference(expression: KtCallExpression) : KtInvokeFunctionReference(expression), KtFirReference {
|
||||||
override fun doRenameImplicitConventionalCall(newName: String?): KtExpression {
|
override fun doRenameImplicitConventionalCall(newName: String?): KtExpression {
|
||||||
TODO("Not yet implemented")
|
TODO("Not yet implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol> {
|
override fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol> {
|
||||||
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)
|
||||||
+6
-6
@@ -11,18 +11,18 @@ 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.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtPropertyDelegate
|
import org.jetbrains.kotlin.psi.KtPropertyDelegate
|
||||||
|
|
||||||
class KtPropertyDelegationMethodsReferenceFirImpl(
|
class KtFirPropertyDelegationMethodsReference(
|
||||||
element: KtPropertyDelegate
|
element: KtPropertyDelegate
|
||||||
) : KtPropertyDelegationMethodsReference(element), FirKtReference {
|
) : KtPropertyDelegationMethodsReference(element), KtFirReference {
|
||||||
override fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol> {
|
override fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol> {
|
||||||
check(analysisSession is FirAnalysisSession)
|
check(analysisSession is KtFirAnalysisSession)
|
||||||
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()
|
||||||
val getValueSymbol = (property.getter?.singleStatementOfType<FirReturnExpression>()?.result as? FirFunctionCall)?.getCalleeSymbol()
|
val getValueSymbol = (property.getter?.singleStatementOfType<FirReturnExpression>()?.result as? FirFunctionCall)?.getCalleeSymbol()
|
||||||
+4
-4
@@ -6,13 +6,13 @@
|
|||||||
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.FrontendAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol
|
||||||
|
|
||||||
interface FirKtReference : KtReference {
|
interface KtFirReference : KtReference {
|
||||||
fun resolveToSymbols(analysisSession: FrontendAnalysisSession): Collection<KtSymbol>
|
fun resolveToSymbols(analysisSession: KtAnalysisSession): Collection<KtSymbol>
|
||||||
|
|
||||||
fun getResolvedToPsi(analysisSession: FrontendAnalysisSession): Collection<PsiElement> =
|
fun getResolvedToPsi(analysisSession: KtAnalysisSession): Collection<PsiElement> =
|
||||||
resolveToSymbols(analysisSession).mapNotNull(KtSymbol::psi)
|
resolveToSymbols(analysisSession).mapNotNull(KtSymbol::psi)
|
||||||
|
|
||||||
override val resolver get() = KtFirReferenceResolver
|
override val resolver get() = KtFirReferenceResolver
|
||||||
+3
-3
@@ -11,18 +11,18 @@ 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.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
|
|
||||||
object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
|
object KtFirReferenceResolver : ResolveCache.PolyVariantResolver<KtReference> {
|
||||||
class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element)
|
class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element)
|
||||||
|
|
||||||
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 KtFirReference) { "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}" }
|
||||||
if (ApplicationManager.getApplication().isDispatchThread) {
|
if (ApplicationManager.getApplication().isDispatchThread) {
|
||||||
throw ProcessCanceledException()
|
throw ProcessCanceledException()
|
||||||
}
|
}
|
||||||
val analysisSession = FirAnalysisSession(ref.expression)
|
val analysisSession = KtFirAnalysisSession(ref.expression)
|
||||||
val resolveToPsiElements = ref.getResolvedToPsi(analysisSession)
|
val resolveToPsiElements = ref.getResolvedToPsi(analysisSession)
|
||||||
return resolveToPsiElements.map { KotlinResolveResult(it) }.toTypedArray()
|
return resolveToPsiElements.map { KotlinResolveResult(it) }.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ abstract class AbstractResolveCallTest : @Suppress("DEPRECATION") KotlinLightCod
|
|||||||
}
|
}
|
||||||
|
|
||||||
val actualText = executeOnPooledThreadInReadAction {
|
val actualText = executeOnPooledThreadInReadAction {
|
||||||
val analysisSession = FirAnalysisSession(file as KtFile)
|
val analysisSession = KtFirAnalysisSession(file as KtFile)
|
||||||
val callInfos = elements.map { element ->
|
val callInfos = elements.map { element ->
|
||||||
when (element) {
|
when (element) {
|
||||||
is KtCallExpression -> analysisSession.resolveCall(element)
|
is KtCallExpression -> analysisSession.resolveCall(element)
|
||||||
|
|||||||
+2
-3
@@ -6,10 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.idea.frontend.api.symbols
|
package org.jetbrains.kotlin.idea.frontend.api.symbols
|
||||||
|
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
import com.intellij.psi.PsiRecursiveElementWalkingVisitor
|
|
||||||
import org.jetbrains.kotlin.idea.addExternalTestFiles
|
import org.jetbrains.kotlin.idea.addExternalTestFiles
|
||||||
import org.jetbrains.kotlin.idea.executeOnPooledThreadInReadAction
|
import org.jetbrains.kotlin.idea.executeOnPooledThreadInReadAction
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.FirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -24,7 +23,7 @@ abstract class AbstractSymbolsByPsiBuildingTest : KotlinLightCodeInsightFixtureT
|
|||||||
val ktFile = myFixture.configureByText(file.name, FileUtil.loadFile(file)) as KtFile
|
val ktFile = myFixture.configureByText(file.name, FileUtil.loadFile(file)) as KtFile
|
||||||
|
|
||||||
val renderedSymbols = executeOnPooledThreadInReadAction {
|
val renderedSymbols = executeOnPooledThreadInReadAction {
|
||||||
val analysisSession = FirAnalysisSession(ktFile)
|
val analysisSession = KtFirAnalysisSession(ktFile)
|
||||||
val declarationSymbols = ktFile.collectDescendantsOfType<KtDeclaration>().map { declaration ->
|
val declarationSymbols = ktFile.collectDescendantsOfType<KtDeclaration>().map { declaration ->
|
||||||
analysisSession.symbolProvider.getSymbol(declaration)
|
analysisSession.symbolProvider.getSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user