AA FIR: allow implicit Java annotation ctor as psi ...so that default value in Java annotation can be retrieved ^KT-66692 fixed
diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 4d694a9..c04365b 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java
@@ -53,6 +53,12 @@ } @Test + @TestMetadata("AnnotationFromJava.kt") + public void testAnnotationFromJava() { + runTest("analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt"); + } + + @Test @TestMetadata("AnnotationInsideFunction.kt") public void testAnnotationInsideFunction() { runTest("analysis/analysis-api/testData/referenceResolve/AnnotationInsideFunction.kt");
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt index 26ef997..17c6906 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
@@ -24,6 +24,7 @@ KtFakeSourceElementKind.EnumGeneratedDeclaration, KtFakeSourceElementKind.DataClassGeneratedMembers, KtFakeSourceElementKind.ImplicitConstructor, + KtFakeSourceElementKind.ImplicitJavaAnnotationConstructor, ) internal fun FirElement.getAllowedPsi() = when (val source = source) {
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java index 6ea6f5c3..29675c0 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java
@@ -53,6 +53,12 @@ } @Test + @TestMetadata("AnnotationFromJava.kt") + public void testAnnotationFromJava() { + runTest("analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt"); + } + + @Test @TestMetadata("AnnotationInsideFunction.kt") public void testAnnotationInsideFunction() { runTest("analysis/analysis-api/testData/referenceResolve/AnnotationInsideFunction.kt");
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java index 9247380d..99ebd6d 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java
@@ -53,6 +53,12 @@ } @Test + @TestMetadata("AnnotationFromJava.kt") + public void testAnnotationFromJava() { + runTest("analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt"); + } + + @Test @TestMetadata("AnnotationInsideFunction.kt") public void testAnnotationInsideFunction() { runTest("analysis/analysis-api/testData/referenceResolve/AnnotationInsideFunction.kt");
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index d49c8e1..f28fe7e 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java
@@ -53,6 +53,12 @@ } @Test + @TestMetadata("AnnotationFromJava.kt") + public void testAnnotationFromJava() { + runTest("analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt"); + } + + @Test @TestMetadata("AnnotationInsideFunction.kt") public void testAnnotationInsideFunction() { runTest("analysis/analysis-api/testData/referenceResolve/AnnotationInsideFunction.kt");
diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 199c82b..1f4b89e 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java
@@ -53,6 +53,12 @@ } @Test + @TestMetadata("AnnotationFromJava.kt") + public void testAnnotationFromJava() { + runTest("analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt"); + } + + @Test @TestMetadata("AnnotationInsideFunction.kt") public void testAnnotationInsideFunction() { runTest("analysis/analysis-api/testData/referenceResolve/AnnotationInsideFunction.kt");
diff --git a/analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt b/analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt new file mode 100644 index 0000000..bed6ff89 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.kt
@@ -0,0 +1,30 @@ +// IGNORE_FE10 +// RENDER_PSI_CLASS_NAME + +// MODULE: lib +// MODULE_KIND: LibraryBinary +// FILE: MyRestrictedApi.java + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + +@Target({ElementType.METHOD, ElementType.CONSTRUCTOR}) +public @interface MyRestrictedApi { + String explanation(); + Class<? extends Annotation>[] allowlistAnnotations() default {}; + boolean allowedInTestonlyTargets() default false; +} + +// MODULE: app(lib) +// FILE: main.kt + +@Target(AnnotationTarget.FUNCTION) annotation class KAllowlist + +class Test { + @My<caret>RestrictedApi( + explanation = "umbrella", + allowlistAnnotations = [KAllowlist::class], + ) + fun foo() {} +}
diff --git a/analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.txt b/analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.txt new file mode 100644 index 0000000..108c0f4 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/AnnotationFromJava.txt
@@ -0,0 +1,2 @@ +Resolved to: +0: (in MyRestrictedApi) constructor(explanation: kotlin.String, allowlistAnnotations: kotlin.Array<kotlin.reflect.KClass<out kotlin.Annotation!>>, allowedInTestonlyTargets: kotlin.Boolean) (psi: ClsClassImpl) \ No newline at end of file