main.io.nlopez.compose.rules.ModifierComposable.kt Maven / Gradle / Ivy
// Copyright 2023 Nacho Lopez
// SPDX-License-Identifier: Apache-2.0
package io.nlopez.compose.rules
import io.nlopez.compose.core.ComposeKtConfig
import io.nlopez.compose.core.ComposeKtVisitor
import io.nlopez.compose.core.Emitter
import io.nlopez.compose.core.report
import io.nlopez.compose.core.util.isModifierReceiver
import org.jetbrains.kotlin.psi.KtFunction
class ModifierComposable : ComposeKtVisitor {
override fun visitComposable(
function: KtFunction,
autoCorrect: Boolean,
emitter: Emitter,
config: ComposeKtConfig,
) {
if (!with(config) { function.isModifierReceiver }) return
emitter.report(function, ComposableModifier)
}
companion object {
val ComposableModifier = """
Using @Composable builder functions for modifiers is not recommended, as they cause unnecessary recompositions.
You should consider migrating this modifier to be based on Modifier.Node instead.
See https://mrmans0n.github.io/compose-rules/rules/#avoid-modifier-extension-factory-functions for more information.
""".trimIndent()
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy