Simplify source operations in FirAnnotationArgumentChecker
This commit is contained in:
+3
-28
@@ -37,7 +37,7 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() {
|
|||||||
val expression = (arg as? FirNamedArgumentExpression)?.expression ?: arg
|
val expression = (arg as? FirNamedArgumentExpression)?.expression ?: arg
|
||||||
|
|
||||||
checkAnnotationArgumentWithSubElements(expression, context.session, reporter)
|
checkAnnotationArgumentWithSubElements(expression, context.session, reporter)
|
||||||
?.let { reporter.report(getFirSourceElement(expression), it) }
|
?.let { reporter.report(expression.source, it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() {
|
|||||||
var usedNonConst = false
|
var usedNonConst = false
|
||||||
|
|
||||||
for (arg in expression.argumentList.arguments) {
|
for (arg in expression.argumentList.arguments) {
|
||||||
val sourceForReport = getFirSourceElement(arg)
|
val sourceForReport = arg.source
|
||||||
|
|
||||||
when (val err = checkAnnotationArgumentWithSubElements(arg, session, reporter)) {
|
when (val err = checkAnnotationArgumentWithSubElements(arg, session, reporter)) {
|
||||||
null -> {
|
null -> {
|
||||||
@@ -70,7 +70,7 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() {
|
|||||||
is FirVarargArgumentsExpression -> {
|
is FirVarargArgumentsExpression -> {
|
||||||
for (arg in expression.arguments)
|
for (arg in expression.arguments)
|
||||||
checkAnnotationArgumentWithSubElements(arg, session, reporter)
|
checkAnnotationArgumentWithSubElements(arg, session, reporter)
|
||||||
?.let { reporter.report(getFirSourceElement(arg), it) }
|
?.let { reporter.report(arg.source, it) }
|
||||||
}
|
}
|
||||||
else ->
|
else ->
|
||||||
return checkAnnotationArgument(expression, session)
|
return checkAnnotationArgument(expression, session)
|
||||||
@@ -224,31 +224,6 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() {
|
|||||||
?.toSymbol(session)
|
?.toSymbol(session)
|
||||||
?.fir
|
?.fir
|
||||||
|
|
||||||
private fun getFirSourceElement(expression: FirExpression): FirSourceElement? =
|
|
||||||
when {
|
|
||||||
expression is FirFunctionCall && expression.calleeReference.name == TO_STRING ->
|
|
||||||
getParentOfFirSourceElement(getParentOfFirSourceElement(expression.source))
|
|
||||||
expression is FirFunctionCall ->
|
|
||||||
expression.source
|
|
||||||
(expression as? FirQualifiedAccess)?.explicitReceiver != null ->
|
|
||||||
getParentOfFirSourceElement(expression.source)
|
|
||||||
else ->
|
|
||||||
expression.source
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getParentOfFirSourceElement(source: FirSourceElement?): FirSourceElement? =
|
|
||||||
when (source) {
|
|
||||||
is FirPsiSourceElement<*> ->
|
|
||||||
source.psi.parent.toFirPsiSourceElement()
|
|
||||||
is FirLightSourceElement -> {
|
|
||||||
val elementOfParent = source.treeStructure.getParent(source.lighterASTNode) ?: source.lighterASTNode
|
|
||||||
|
|
||||||
elementOfParent.toFirLightSourceElement(source.treeStructure)
|
|
||||||
}
|
|
||||||
else ->
|
|
||||||
source
|
|
||||||
}
|
|
||||||
|
|
||||||
private inline fun <reified T : FirSourceElement, P : PsiElement> DiagnosticReporter.report(
|
private inline fun <reified T : FirSourceElement, P : PsiElement> DiagnosticReporter.report(
|
||||||
source: T?,
|
source: T?,
|
||||||
factory: FirDiagnosticFactory0<T, P>
|
factory: FirDiagnosticFactory0<T, P>
|
||||||
|
|||||||
Reference in New Issue
Block a user