FIR IDE/UAST: introduce UAST-specific version of analyse

This commit is contained in:
Jinseong Jeon
2021-06-04 22:37:03 -07:00
committed by teamcityserver
parent 1517fd0ca0
commit 0db510ad8b
2 changed files with 16 additions and 6 deletions
@@ -7,8 +7,7 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiType
import org.jetbrains.kotlin.idea.frontend.api.analyseWithCustomToken
import org.jetbrains.kotlin.idea.frontend.api.tokens.AlwaysAccessibleValidityTokenFactory
import org.jetbrains.kotlin.idea.frontend.api.analyseForUast
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
import org.jetbrains.kotlin.psi.KtExpression
@@ -28,7 +27,7 @@ interface FirKotlinUastResolveProviderService : BaseKotlinUastResolveProviderSer
override fun resolveToDeclaration(ktExpression: KtExpression): PsiElement? {
when (ktExpression) {
is KtReferenceExpression -> {
analyseWithCustomToken(ktExpression, AlwaysAccessibleValidityTokenFactory) {
analyseForUast(ktExpression) {
return ktExpression.mainReference.resolve()
}
}
@@ -38,14 +37,14 @@ interface FirKotlinUastResolveProviderService : BaseKotlinUastResolveProviderSer
}
override fun resolveToType(ktTypeReference: KtTypeReference, source: UElement): PsiType? {
analyseWithCustomToken(ktTypeReference, AlwaysAccessibleValidityTokenFactory) {
analyseForUast(ktTypeReference) {
return ktTypeReference.getPsiType(TypeMappingMode.DEFAULT_UAST)
}
}
override fun getExpressionType(uExpression: UExpression): PsiType? {
val ktExpression = uExpression.sourcePsi as? KtExpression ?: return null
analyseWithCustomToken(ktExpression, AlwaysAccessibleValidityTokenFactory) {
analyseForUast(ktExpression) {
return ktExpression.getPsiType(TypeMappingMode.DEFAULT_UAST)
}
}