Slightly polish FirAnnotationClassDeclarationChecker
This commit is contained in:
+15
-7
@@ -17,8 +17,8 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.FirLightSourceElement
|
import org.jetbrains.kotlin.fir.FirLightSourceElement
|
||||||
import org.jetbrains.kotlin.fir.FirPsiSourceElement
|
import org.jetbrains.kotlin.fir.FirPsiSourceElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
|
||||||
import org.jetbrains.kotlin.KtNodeTypes.FUN
|
import org.jetbrains.kotlin.KtNodeTypes.FUN
|
||||||
|
import org.jetbrains.kotlin.KtNodeTypes.VALUE_PARAMETER
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens.VAL_KEYWORD
|
import org.jetbrains.kotlin.lexer.KtTokens.VAL_KEYWORD
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens.VAR_KEYWORD
|
import org.jetbrains.kotlin.lexer.KtTokens.VAR_KEYWORD
|
||||||
import org.jetbrains.kotlin.psi.KtParameter
|
import org.jetbrains.kotlin.psi.KtParameter
|
||||||
@@ -30,7 +30,7 @@ object FirAnnotationClassDeclarationChecker : FirDeclarationChecker<FirDeclarati
|
|||||||
if (declaration.isLocal) reporter.report(declaration.source, FirErrors.LOCAL_ANNOTATION_CLASS_ERROR)
|
if (declaration.isLocal) reporter.report(declaration.source, FirErrors.LOCAL_ANNOTATION_CLASS_ERROR)
|
||||||
for (it in declaration.declarations) {
|
for (it in declaration.declarations) {
|
||||||
when {
|
when {
|
||||||
it is FirConstructor && it.isPrimary ->
|
it is FirConstructor && it.isPrimary -> {
|
||||||
for (parameter in it.valueParameters)
|
for (parameter in it.valueParameters)
|
||||||
when (val parameterSourceElement = parameter.source) {
|
when (val parameterSourceElement = parameter.source) {
|
||||||
is FirPsiSourceElement<*> -> {
|
is FirPsiSourceElement<*> -> {
|
||||||
@@ -49,12 +49,20 @@ object FirAnnotationClassDeclarationChecker : FirDeclarationChecker<FirDeclarati
|
|||||||
reporter.report(parameterSourceElement, FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER)
|
reporter.report(parameterSourceElement, FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
it is FirRegularClass
|
|
||||||
|| it is FirProperty && it.initializer is FirQualifiedAccessExpression
|
|
||||||
|| it is FirSimpleFunction && it.source?.elementType != FUN -> {
|
|
||||||
// DO NOTHING
|
|
||||||
}
|
}
|
||||||
else -> reporter.report(it.source, FirErrors.ANNOTATION_CLASS_MEMBER)
|
it is FirRegularClass -> {
|
||||||
|
// DO NOTHING: nested annotation classes are allowed in 1.3+
|
||||||
|
}
|
||||||
|
it is FirProperty && it.source?.elementType == VALUE_PARAMETER -> {
|
||||||
|
// DO NOTHING to avoid reporting constructor properties
|
||||||
|
}
|
||||||
|
it is FirSimpleFunction && it.source?.elementType != FUN -> {
|
||||||
|
// DO NOTHING to avoid reporting synthetic functions
|
||||||
|
// TODO: replace with origin check
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
reporter.report(it.source, FirErrors.ANNOTATION_CLASS_MEMBER)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user