[Analysis API] Move default annotation argument reference to kotlin repo

This reference is frontend-independent, so its implementation is placed
inside kt-references directly.
This commit is contained in:
Tianyu Geng
2022-05-05 18:05:17 +00:00
committed by Ilya Kirillov
parent a7c37286a3
commit 19e9143bc1
3 changed files with 80 additions and 6 deletions
@@ -9,12 +9,11 @@ import com.intellij.psi.PsiReference
import org.jetbrains.kotlin.analysis.api.descriptors.references.*
import org.jetbrains.kotlin.idea.references.KotlinPsiReferenceRegistrar
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
import org.jetbrains.kotlin.idea.references.KtDefaultAnnotationArgumentReference
import org.jetbrains.kotlin.idea.references.readWriteAccess
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.KtPackageDirective
import org.jetbrains.kotlin.psi.KtUserType
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch
import org.jetbrains.kotlin.psi.psiUtil.parents
import org.jetbrains.kotlin.resolve.references.ReferenceAccess
@@ -51,6 +50,14 @@ class KtFe10KotlinReferenceProviderContributor : KotlinReferenceProviderContribu
)
}
}
registerProvider<KtValueArgument> provider@{ element: KtValueArgument ->
if (element.isNamed()) return@provider null
val annotationEntry = element.getParentOfTypeAndBranch<KtAnnotationEntry> { valueArgumentList } ?: return@provider null
if (annotationEntry.valueArguments.size != 1) return@provider null
KtDefaultAnnotationArgumentReference(element)
}
}
}
}