override fun visitComposable()

in rules/common/src/main/kotlin/com/twitter/compose/rules/ComposeViewModelInjection.kt [25:42]


    override fun visitComposable(function: KtFunction, autoCorrect: Boolean, emitter: Emitter) {
        if (function.isOverride || function.definedInInterface) return

        val bodyBlock = function.bodyBlockExpression ?: return

        bodyBlock.findChildrenByClass<KtProperty>()
            .flatMap { property ->
                property.findDirectChildrenByClass<KtCallExpression>()
                    .filter { KnownViewModelFactories.contains(it.calleeExpression?.text) }
                    .map { property to it.calleeExpression!!.text }
            }
            .forEach { (property, viewModelFactoryName) ->
                emitter.report(property, errorMessage(viewModelFactoryName), true)
                if (autoCorrect) {
                    fix(function, property, viewModelFactoryName)
                }
            }
    }