FIR IDE: Add KtFunctionLikeSymbol.hasStableParameterNames.
This commit is contained in:
committed by
teamcityserver
parent
5c111f8979
commit
d30d8037cf
@@ -12,6 +12,11 @@ public fun KtCallTarget.getSuccessCallSymbolOrNull(): KtFunctionLikeSymbol? = wh
|
||||
is KtErrorCallTarget -> null
|
||||
}
|
||||
|
||||
public fun KtCallTarget.getSingleCandidateSymbolOrNull(): KtFunctionLikeSymbol? = when (this) {
|
||||
is KtSuccessCallTarget -> symbol
|
||||
is KtErrorCallTarget -> candidates.singleOrNull()
|
||||
}
|
||||
|
||||
public inline fun <reified S : KtFunctionLikeSymbol> KtCall.isSuccessCallOf(predicate: (S) -> Boolean): Boolean {
|
||||
if (this !is KtFunctionCall) return false
|
||||
val symbol = targetFunction.getSuccessCallSymbolOrNull() ?: return false
|
||||
|
||||
+7
@@ -14,6 +14,13 @@ import org.jetbrains.kotlin.name.FqName
|
||||
public abstract class KtFunctionLikeSymbol : KtCallableSymbol(), KtSymbolWithKind {
|
||||
public abstract val valueParameters: List<KtValueParameterSymbol>
|
||||
|
||||
/**
|
||||
* Kotlin functions always have stable parameter names that can be reliably used when calling them with named arguments.
|
||||
* Functions loaded from platform definitions (e.g. Java binaries or JS) may have unstable parameter names that vary from
|
||||
* one platform installation to another. These names can not be used reliably for calls with named arguments.
|
||||
*/
|
||||
public abstract val hasStableParameterNames: Boolean
|
||||
|
||||
abstract override fun createPointer(): KtSymbolPointer<KtFunctionLikeSymbol>
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.idea.fir.findPsi
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
|
||||
@@ -41,6 +42,8 @@ internal class KtFirAnonymousFunctionSymbol(
|
||||
}
|
||||
}
|
||||
|
||||
override val hasStableParameterNames: Boolean = firRef.withFir { it.getHasStableParameterNames(it.moduleData.session) }
|
||||
|
||||
override val isExtension: Boolean get() = firRef.withFir { it.receiverTypeRef != null }
|
||||
override val receiverType: KtTypeAndAnnotations? by cached {
|
||||
firRef.receiverTypeAndAnnotations(builder)
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.idea.fir.findPsi
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
|
||||
@@ -54,6 +55,8 @@ internal class KtFirConstructorSymbol(
|
||||
}
|
||||
}
|
||||
|
||||
override val hasStableParameterNames: Boolean = firRef.withFir { it.getHasStableParameterNames(it.moduleData.session) }
|
||||
|
||||
override val visibility: Visibility get() = getVisibility()
|
||||
|
||||
override val annotations: List<KtAnnotationCall> by cached { firRef.toAnnotationsList() }
|
||||
|
||||
+3
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.idea.fir.findPsi
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder
|
||||
@@ -63,6 +64,8 @@ internal class KtFirFunctionSymbol(
|
||||
}
|
||||
}
|
||||
|
||||
override val hasStableParameterNames: Boolean = firRef.withFir { it.getHasStableParameterNames(it.moduleData.session) }
|
||||
|
||||
override val annotations: List<KtAnnotationCall> by cached { firRef.toAnnotationsList() }
|
||||
override fun containsAnnotation(classId: ClassId): Boolean = firRef.containsAnnotation(classId)
|
||||
override val annotationClassIds: Collection<ClassId> by cached { firRef.getAnnotationClassIds() }
|
||||
|
||||
Reference in New Issue
Block a user