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 efce8f1b317..84ae6210bb4 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 @@ -2016,6 +2016,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithClassArray.kt"); } + @Test + @TestMetadata("javaAnnotationWithParameter.kt") + public void testJavaAnnotationWithParameter() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt"); + } + @Test @TestMetadata("JvmSerializableLambdaAnnotation.kt") public void testJvmSerializableLambdaAnnotation() 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 ffd6fcb23aa..560b7512f27 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 @@ -2016,6 +2016,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithClassArray.kt"); } + @Test + @TestMetadata("javaAnnotationWithParameter.kt") + public void testJavaAnnotationWithParameter() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt"); + } + @Test @TestMetadata("JvmSerializableLambdaAnnotation.kt") public void testJvmSerializableLambdaAnnotation() 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 9df230e2838..062b8492430 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 @@ -2010,6 +2010,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithClassArray.kt"); } + @Test + @TestMetadata("javaAnnotationWithParameter.kt") + public void testJavaAnnotationWithParameter() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt"); + } + @Test @TestMetadata("JvmSerializableLambdaAnnotation.kt") public void testJvmSerializableLambdaAnnotation() 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 58787f8991d..e258ba93ea0 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 @@ -2016,6 +2016,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithClassArray.kt"); } + @Test + @TestMetadata("javaAnnotationWithParameter.kt") + public void testJavaAnnotationWithParameter() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt"); + } + @Test @TestMetadata("JvmSerializableLambdaAnnotation.kt") public void testJvmSerializableLambdaAnnotation() throws Exception { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt index 21042f7c9e5..54c986c12bf 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt @@ -220,6 +220,9 @@ object FirAnnotationClassDeclarationChecker : FirRegularClassChecker() { annotationsWithCycle += ownedAnnotation return true } + if (referencedAnnotation.isJavaOrEnhancement) { + return false + } return annotationHasCycle(referencedAnnotation) } } diff --git a/compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt b/compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt new file mode 100644 index 00000000000..fc6576800d0 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt @@ -0,0 +1,13 @@ +// FIR_IDENTICAL +// ISSUE: KT-64083 +// FILE: ThreadSafe.java + +public @interface ThreadSafe { + String reason() default ""; +} + +// FILE: test.kt + +private annotation class AutoFactoryThreadSafe( + val threadSafe: ThreadSafe = ThreadSafe() +) 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 1046fa86c4b..1d02c0c6b76 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 @@ -2016,6 +2016,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithClassArray.kt"); } + @Test + @TestMetadata("javaAnnotationWithParameter.kt") + public void testJavaAnnotationWithParameter() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/javaAnnotationWithParameter.kt"); + } + @Test @TestMetadata("JvmSerializableLambdaAnnotation.kt") public void testJvmSerializableLambdaAnnotation() throws Exception {