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)
}
}
}