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