[FIR IDE] Fix annotation value parameter and ctor resolve

This commit is contained in:
Igor Yakovlev
2021-01-26 02:37:47 +03:00
parent 019635189a
commit 659d2c13b4
4 changed files with 23 additions and 8 deletions
@@ -186,14 +186,14 @@ internal object FirReferenceResolveHelper {
val ktValueArgumentName = expression.parent as? KtValueArgumentName ?: return emptyList()
val ktValueArgument = ktValueArgumentName.parent as? KtValueArgument ?: return emptyList()
val ktValueArgumentList = ktValueArgument.parent as? KtValueArgumentList ?: return emptyList()
val ktCallExpression = ktValueArgumentList.parent as? KtCallExpression ?: return emptyList()
val ktCallExpression = ktValueArgumentList.parent as? KtCallElement ?: return emptyList()
val firCall = ktCallExpression.getOrBuildFirSafe<FirFunctionCall>(analysisSession.firResolveState) ?: return emptyList()
val firCall = ktCallExpression.getOrBuildFirSafe<FirCall>(analysisSession.firResolveState) ?: return emptyList()
val parameter = firCall.findCorrespondingParameter(ktValueArgument) ?: return emptyList()
return listOfNotNull(parameter.buildSymbol(symbolBuilder))
}
private fun FirFunctionCall.findCorrespondingParameter(ktValueArgument: KtValueArgument): FirValueParameter? =
private fun FirCall.findCorrespondingParameter(ktValueArgument: KtValueArgument): FirValueParameter? =
argumentMapping?.entries?.firstNotNullResult { (firArgument, firParameter) ->
if (firArgument.psi == ktValueArgument) firParameter
else null
@@ -1,6 +1,5 @@
// IGNORE_FIR
@java.lang.annotation.Retention(va<caret>lue = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Re<caret>tention(va<caret>lue = java.lang.annotation.RetentionPolicy.RUNTIME)
annotation class Anno()
// REF: (in java.lang.annotation.Retention).value()
// REF1: (java.lang.annotation).Retention
// REF2: (in java.lang.annotation.Retention).value()