override fun visitComposable()

in rules/common/src/main/kotlin/com/twitter/compose/rules/ComposeModifierWithoutDefault.kt [18:34]


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

        // Look for modifier params in the composable signature, and if any without a default value is found, error out.
        function.valueParameters.filter { it.isModifier }
            .filterNot { it.hasDefaultValue() }
            .forEach { modifierParameter ->
                emitter.report(modifierParameter, MissingModifierDefaultParam, true)

                // This error is easily auto fixable, we just inject ` = Modifier` to the param
                if (autoCorrect) {
                    val lastToken = modifierParameter.node.lastChildLeafOrSelf() as LeafPsiElement
                    val currentText = lastToken.text
                    lastToken.rawReplaceWithText("$currentText = Modifier")
                }
            }
    }