fixup! K2 AA CodeGen: Set annotation for declarations out of CodeGen targets
diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt
index 4077fac..3774444 100644
--- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt
+++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt
@@ -41,6 +41,7 @@
 import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.name.FqName
+import org.jetbrains.kotlin.name.FqNameUnsafe
 import org.jetbrains.kotlin.psi.KtCodeFragment
 import org.jetbrains.kotlin.psi.KtElement
 import org.jetbrains.kotlin.psi.KtFile
@@ -92,8 +93,8 @@
     override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) {
         val testFile = mainModule.files.single { it.name == mainFile.name }
 
-        val checkComposableFunctions = mainModule.directives.contains(Directives.CHECK_COMPOSABLE_CALL)
-        val irCollector = CollectingIrGenerationExtension(checkComposableFunctions)
+        val annotationToCheckCalls = mainModule.directives[Directives.CHECK_CALLS_WITH_ANNOTATION].singleOrNull()
+        val irCollector = CollectingIrGenerationExtension(annotationToCheckCalls)
 
         val project = mainFile.project
         project.extensionArea.getExtensionPoint(IrGenerationExtension.extensionPointName)
@@ -128,9 +129,9 @@
                 testServices.assertions.assertEqualsToTestDataFileSibling(irCollector.result, extension = ".ir.txt")
             }
 
-            if (checkComposableFunctions) {
+            if (annotationToCheckCalls != null) {
                 testServices.assertions.assertEqualsToTestDataFileSibling(
-                    irCollector.composableFunctions.joinToString("\n"), extension = ".composable.txt"
+                    irCollector.functionsWithAnnotationToCheckCalls.joinToString("\n"), extension = ".check_calls.txt"
                 )
             }
         }
@@ -212,8 +213,8 @@
             "Attach the 'stdlib-jvm-minimal-for-test' library to simulate duplicate stdlib dependency"
         )
 
-        val CHECK_COMPOSABLE_CALL by directive(
-            "Check whether all functions of calls and getters of properties with MyComposable annotation are listed in *.composable.txt or not"
+        val CHECK_CALLS_WITH_ANNOTATION by stringDirective(
+            "Check whether all functions of calls and getters of properties with a given annotation are listed in *.check_calls.txt or not"
         )
     }
 }
@@ -248,11 +249,11 @@
     }
 }
 
-private class CollectingIrGenerationExtension(private val collectComposableFunctions: Boolean) : IrGenerationExtension {
+private class CollectingIrGenerationExtension(private val annotationToCheckCalls: String?) : IrGenerationExtension {
     lateinit var result: String
         private set
 
-    val composableFunctions: MutableSet<String> = mutableSetOf()
+    val functionsWithAnnotationToCheckCalls: MutableSet<String> = mutableSetOf()
 
     override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) {
         assertFalse { ::result.isInitialized }
@@ -266,17 +267,25 @@
 
         result = moduleFragment.dump(dumpOptions)
 
-        if (collectComposableFunctions) {
-            moduleFragment.accept(ComposableCallVisitor { composableFunctions.add(it.name.asString()) }, null)
+        annotationToCheckCalls?.let { annotationFqName ->
+            moduleFragment.accept(
+                CheckCallsWithAnnotationVisitor(annotationFqName) { functionsWithAnnotationToCheckCalls.add(it.name.asString()) }, null
+            )
         }
     }
 
     /**
      * This class recursively visits all calls of functions and getters, and if the function or the getter used for a call has
-     * `MyComposable` annotation, it runs [handleComposable] for the function or the getter.
+     * an annotation whose FqName is [annotationFqName], it runs [handleFunctionWithAnnotation] for the function or the getter.
      */
-    private class ComposableCallVisitor(private val handleComposable: (declaration: IrDeclarationWithName) -> Unit) : IrElementVisitorVoid {
-        val MyComposableClassId = ClassId(FqName("org.jetbrains.kotlin.fir.plugin"), FqName("MyComposable"), false)
+    private class CheckCallsWithAnnotationVisitor(
+        private val annotationFqName: String,
+        private val handleFunctionWithAnnotation: (declaration: IrDeclarationWithName) -> Unit,
+    ) : IrElementVisitorVoid {
+        val annotationClassId by lazy {
+            val annotationFqNameUnsafe = FqNameUnsafe(annotationFqName)
+            ClassId(FqName(annotationFqNameUnsafe.parent()), FqName(annotationFqNameUnsafe.shortName().asString()), false)
+        }
 
         override fun visitElement(element: IrElement) {
             element.acceptChildrenVoid(this)
@@ -285,21 +294,21 @@
         override fun visitCall(expression: IrCall) {
             @OptIn(UnsafeDuringIrConstructionAPI::class)
             val function = expression.symbol.owner
-            if (function.containsComposableAnnotation()) {
-                handleComposable(function)
+            if (function.containsAnnotationToCheckCalls()) {
+                handleFunctionWithAnnotation(function)
             }
         }
 
         override fun visitFieldAccess(expression: IrFieldAccessExpression) {
             @OptIn(UnsafeDuringIrConstructionAPI::class)
             val field = expression.symbol.owner
-            if (field.containsComposableAnnotation()) {
-                handleComposable(field)
+            if (field.containsAnnotationToCheckCalls()) {
+                handleFunctionWithAnnotation(field)
             }
         }
 
-        private fun IrAnnotationContainer.containsComposableAnnotation() =
+        private fun IrAnnotationContainer.containsAnnotationToCheckCalls() =
             @OptIn(UnsafeDuringIrConstructionAPI::class)
-            annotations.any { it.symbol.owner.parentClassId == MyComposableClassId }
+            annotations.any { it.symbol.owner.parentClassId == annotationClassId }
     }
 }
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.composable.txt b/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.check_calls.txt
similarity index 100%
rename from analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.composable.txt
rename to analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.check_calls.txt
diff --git a/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.kt b/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.kt
index fc3f018..421f100 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.kt
+++ b/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget.kt
@@ -1,6 +1,6 @@
 // WITH_FIR_TEST_COMPILER_PLUGIN
 // DUMP_IR
-// CHECK_COMPOSABLE_CALL
+// CHECK_CALLS_WITH_ANNOTATION: org.jetbrains.kotlin.fir.plugin.MyComposable
 
 // MODULE: main
 // FILE: main.kt
diff --git a/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.composable.txt b/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.check_calls.txt
similarity index 100%
rename from analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.composable.txt
rename to analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.check_calls.txt
diff --git a/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.kt b/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.kt
index 7421146..3cbc1ca 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.kt
+++ b/analysis/analysis-api/testData/components/compilerFacility/firPluginPrototypeMultiModule/annotationForFunctionOutOfCodeGenTarget2.kt
@@ -1,6 +1,6 @@
 // WITH_FIR_TEST_COMPILER_PLUGIN
 // DUMP_IR
-// CHECK_COMPOSABLE_CALL
+// CHECK_CALLS_WITH_ANNOTATION: org.jetbrains.kotlin.fir.plugin.MyComposable
 
 // MODULE: main
 // FILE: main.kt