diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt index c10b21e310e..abe1956f3ef 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers import com.intellij.lang.LighterASTNode import org.jetbrains.kotlin.* +import org.jetbrains.kotlin.KtFakeSourceElementKind.DesugaredComponentFunctionCall import org.jetbrains.kotlin.builtins.StandardNames.HASHCODE_NAME import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality @@ -30,7 +31,6 @@ import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.providers.firProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.scopes.* -import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope import org.jetbrains.kotlin.fir.scopes.impl.multipleDelegatesWithTheSameSignature import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol @@ -617,10 +617,10 @@ fun getActualTargetList(container: FirAnnotationContainer): AnnotationTargetList is FirProperty -> { when { annotated.isLocal -> - if (annotated.source?.kind == KtFakeSourceElementKind.DesugaredComponentFunctionCall) { - TargetLists.T_DESTRUCTURING_DECLARATION - } else { - TargetLists.T_LOCAL_VARIABLE + when { + annotated.source?.kind == DesugaredComponentFunctionCall -> TargetLists.T_DESTRUCTURING_DECLARATION + annotated.isCatchParameter == true -> TargetLists.T_CATCH_PARAMETER + else -> TargetLists.T_LOCAL_VARIABLE } annotated.isMember -> if (annotated.source?.kind == KtFakeSourceElementKind.PropertyFromParameter) { diff --git a/compiler/testData/diagnostics/tests/annotations/AnnotatedCatchValueParameter.fir.kt b/compiler/testData/diagnostics/tests/annotations/AnnotatedCatchValueParameter.fir.kt index 8e63d125f60..919526deb1e 100644 --- a/compiler/testData/diagnostics/tests/annotations/AnnotatedCatchValueParameter.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/AnnotatedCatchValueParameter.fir.kt @@ -16,7 +16,7 @@ annotation class FixCatchClass fun main() { try { - } catch (@FixCatchLocalVariable @FixCatchValueParameter @FixCatchClass e: Throwable) { + } catch (@FixCatchLocalVariable @FixCatchValueParameter @FixCatchClass e: Throwable) { } } diff --git a/core/compiler.common/src/org/jetbrains/kotlin/resolve/AnnotationTargetLists.kt b/core/compiler.common/src/org/jetbrains/kotlin/resolve/AnnotationTargetLists.kt index fb119c0d744..4b0852a2e38 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/resolve/AnnotationTargetLists.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/resolve/AnnotationTargetLists.kt @@ -19,6 +19,8 @@ object AnnotationTargetLists { onlyWithUseSiteTarget(PROPERTY_SETTER, VALUE_PARAMETER) } + val T_CATCH_PARAMETER = targetList(LOCAL_VARIABLE, VALUE_PARAMETER) + val T_DESTRUCTURING_DECLARATION = targetList(DESTRUCTURING_DECLARATION) private fun TargetListBuilder.propertyTargets(backingField: Boolean, delegate: Boolean) {