override fun process()

in dsl/ktor/ktor-lang-parser/src/main/kotlin/io/kotless/parser/ktor/processor/action/GlobalActionsProcessor.kt [24:41]


    override fun process(files: Set<KtFile>, binding: BindingContext, context: ProcessorContext): Output {
        val permissions = HashSet<Permission>()

        processClasses(files, binding) { klass, _ ->
            klass.visitNamedFunctions(filter = { func -> func.name == KotlessAzure::prepare.name }) { func ->
                func.visitCallExpressionsWithReferences(
                    filter = { it.getFqName(binding) == "io.ktor.application.ApplicationEvents.subscribe" }, binding = binding, visitOnce = true
                ) { element ->
                    val event = element.getArgument("definition", binding)
                    if (event.asReferencedDescriptorOrNull(binding)?.fqNameSafe?.asString() == "io.kotless.dsl.ktor.lang.LambdaWarming") {
                        permissions += PermissionsProcessor.process(element, binding, context)
                    }
                }
            }
        }

        return Output(permissions)
    }