From 1d2b0a231d487faa08c94d190f6a27d75acfa568 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Tue, 26 Jan 2021 02:37:47 +0300 Subject: [PATCH] [FIR IDE] Fix annotation value parameter and ctor resolve Original commit: 659d2c13b4aee40949d53975b934ec919a86dbf0 GitOrigin-RevId: 18f0641ac6c0433fed42e46112a8a915743d2431 --- .../kotlin/idea/references/FirReferenceResolveHelper.kt | 6 +++--- .../testData/resolve/references/JavaAnnotationParameter.kt | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/plugins/kotlin/frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt b/plugins/kotlin/frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt index c0928b8f1d66..85621f745081 100644 --- a/plugins/kotlin/frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt +++ b/plugins/kotlin/frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt @@ -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(analysisSession.firResolveState) ?: return emptyList() + val firCall = ktCallExpression.getOrBuildFirSafe(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 diff --git a/plugins/kotlin/idea/tests/testData/resolve/references/JavaAnnotationParameter.kt b/plugins/kotlin/idea/tests/testData/resolve/references/JavaAnnotationParameter.kt index 53a984e54b28..23dbefa5d91c 100644 --- a/plugins/kotlin/idea/tests/testData/resolve/references/JavaAnnotationParameter.kt +++ b/plugins/kotlin/idea/tests/testData/resolve/references/JavaAnnotationParameter.kt @@ -1,4 +1,5 @@ -@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) +@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) annotation class Anno() -// REF: of java.lang.annotation.Retention.value() \ No newline at end of file +// REF1: (java.lang.annotation).Retention +// REF2: of java.lang.annotation.Retention.value()