[FIR] Check FirReceiverParameter annotations' targets
This commit is contained in:
committed by
Space Team
parent
0c77de3049
commit
343deeec1c
@@ -574,7 +574,7 @@ fun FirFunctionSymbol<*>.isFunctionForExpectTypeFromCastFeature(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
fun getActualTargetList(annotated: FirDeclaration): AnnotationTargetList {
|
||||
fun getActualTargetList(annotated: FirAnnotationContainer): AnnotationTargetList {
|
||||
fun CallableId.isMember(): Boolean {
|
||||
return classId != null || isLocal // TODO: Replace with .containingClass (after fixing)
|
||||
}
|
||||
@@ -628,6 +628,7 @@ fun getActualTargetList(annotated: FirDeclaration): AnnotationTargetList {
|
||||
is FirBackingField -> TargetLists.T_BACKING_FIELD
|
||||
is FirFile -> TargetLists.T_FILE
|
||||
is FirTypeParameter -> TargetLists.T_TYPE_PARAMETER
|
||||
is FirReceiverParameter -> TargetLists.T_TYPE_REFERENCE
|
||||
is FirAnonymousInitializer -> TargetLists.T_INITIALIZER
|
||||
is FirAnonymousObject ->
|
||||
if (annotated.source?.kind == KtFakeSourceElementKind.EnumInitializer) {
|
||||
|
||||
+17
-3
@@ -38,6 +38,20 @@ object FirAnnotationChecker : FirBasicDeclarationChecker() {
|
||||
declaration: FirDeclaration,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
) {
|
||||
checkAnnotationContainer(declaration, context, reporter)
|
||||
|
||||
if (declaration is FirCallableDeclaration) {
|
||||
declaration.receiverParameter?.let {
|
||||
checkAnnotationContainer(it, context, reporter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkAnnotationContainer(
|
||||
declaration: FirAnnotationContainer,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
) {
|
||||
var deprecated: FirAnnotation? = null
|
||||
var deprecatedSinceKotlin: FirAnnotation? = null
|
||||
@@ -88,7 +102,7 @@ object FirAnnotationChecker : FirBasicDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkMultiFieldValueClassAnnotationRestrictions(
|
||||
declaration: FirDeclaration,
|
||||
declaration: FirAnnotationContainer,
|
||||
annotation: FirAnnotation,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
@@ -123,7 +137,7 @@ object FirAnnotationChecker : FirBasicDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkAnnotationTarget(
|
||||
declaration: FirDeclaration,
|
||||
declaration: FirAnnotationContainer,
|
||||
annotation: FirAnnotation,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
@@ -172,7 +186,7 @@ object FirAnnotationChecker : FirBasicDeclarationChecker() {
|
||||
}
|
||||
|
||||
private fun checkAnnotationUseSiteTarget(
|
||||
annotated: FirDeclaration,
|
||||
annotated: FirAnnotationContainer,
|
||||
annotation: FirAnnotation,
|
||||
target: AnnotationUseSiteTarget,
|
||||
context: CheckerContext,
|
||||
|
||||
+1
-1
@@ -21,4 +21,4 @@ fun (<!WRONG_ANNOTATION_TARGET!>@Anno<!> Int).crane() {}
|
||||
@Target(AnnotationTarget.FILE)
|
||||
annotation class Anno2
|
||||
|
||||
fun @receiver:Anno2 Int.pain() {}
|
||||
fun <!WRONG_ANNOTATION_TARGET_WITH_USE_SITE_TARGET!>@receiver:Anno2<!> Int.pain() {}
|
||||
|
||||
Reference in New Issue
Block a user