diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index f9b80c1e453..d36e5e04170 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -711,6 +711,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/missingIteratorMissing.kt"); } + @Test + @TestMetadata("missingWrongAnnotationTarget.kt") + public void testMissingWrongAnnotationTarget() throws Exception { + runTest("compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt"); + } + @Test @TestMetadata("MultilineStringTemplates.kt") public void testMultilineStringTemplates() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 078709b44f2..621942bbff5 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -711,6 +711,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/missingIteratorMissing.kt"); } + @Test + @TestMetadata("missingWrongAnnotationTarget.kt") + public void testMissingWrongAnnotationTarget() throws Exception { + runTest("compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt"); + } + @Test @TestMetadata("MultilineStringTemplates.kt") public void testMultilineStringTemplates() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 28cee641e89..76e8e6a499c 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -711,6 +711,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/missingIteratorMissing.kt"); } + @Test + @TestMetadata("missingWrongAnnotationTarget.kt") + public void testMissingWrongAnnotationTarget() throws Exception { + runTest("compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt"); + } + @Test @TestMetadata("MultilineStringTemplates.kt") public void testMultilineStringTemplates() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 2ca3a9815cc..afef44f5525 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -711,6 +711,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/missingIteratorMissing.kt"); } + @Test + @TestMetadata("missingWrongAnnotationTarget.kt") + public void testMissingWrongAnnotationTarget() throws Exception { + runTest("compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt"); + } + @Test @TestMetadata("MultilineStringTemplates.kt") public void testMultilineStringTemplates() throws Exception { diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirExpressionBuilder.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirExpressionBuilder.kt index 395fc3552a2..29c7e7db361 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirExpressionBuilder.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirExpressionBuilder.kt @@ -728,6 +728,7 @@ class LightTreeRawFirExpressionBuilder( symbol = FirPropertySymbol(variable.name) isLocal = true status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL) + annotations += variable.annotations } } DESTRUCTURING_DECLARATION -> subjectExpression = diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt index 9ad409539c1..c1144787149 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt @@ -2384,6 +2384,7 @@ open class PsiRawFirBuilder( symbol = FirPropertySymbol(name) isLocal = true status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL) + ktSubjectExpression.extractAnnotationsTo(this) } } else -> null diff --git a/compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt b/compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt new file mode 100644 index 00000000000..48b19b9f85c --- /dev/null +++ b/compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt @@ -0,0 +1,12 @@ +// FIR_IDENTICAL +// ISSUE: KT-53565 + +@Target(AnnotationTarget.CLASS) +annotation class InvalidAnn + +fun wrongAnnotationTargetInWhenSubject() { + // Error expected on annotation + when(@InvalidAnn val x = 0) { + 0 -> {} + } +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index b7eeea80914..5fdd6a41f75 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -711,6 +711,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/missingIteratorMissing.kt"); } + @Test + @TestMetadata("missingWrongAnnotationTarget.kt") + public void testMissingWrongAnnotationTarget() throws Exception { + runTest("compiler/testData/diagnostics/tests/missingWrongAnnotationTarget.kt"); + } + @Test @TestMetadata("MultilineStringTemplates.kt") public void testMultilineStringTemplates() throws Exception {