Skip to content

Commit

Permalink
Take nullable types into account for trailing lambdas in ComposeParam…
Browse files Browse the repository at this point in the history
…eterOrder
  • Loading branch information
mrmans0n committed Jun 9, 2023
1 parent e7ad72c commit a36890f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import io.nlopez.rules.core.util.isModifier
import io.nlopez.rules.core.util.runIf
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtFunctionType
import org.jetbrains.kotlin.psi.KtNullableType
import org.jetbrains.kotlin.psi.KtParameter

class ComposeParameterOrder : ComposeKtVisitor {
Expand Down Expand Up @@ -52,7 +53,12 @@ class ComposeParameterOrder : ComposeKtVisitor {
}

private val KtFunction.hasTrailingFunction: Boolean
get() = valueParameters.lastOrNull()?.typeReference?.typeElement is KtFunctionType
get() =
when (val outerType = valueParameters.lastOrNull()?.typeReference?.typeElement) {
is KtFunctionType -> true
is KtNullableType -> outerType.innerType is KtFunctionType
else -> false
}

companion object {
fun createErrorMessage(currentOrder: List<KtParameter>, properOrder: List<KtParameter>): String =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ class ComposeParameterOrderCheckTest {
@Composable
fun MyComposable(text1: String, modifier: Modifier = Modifier, m2: Modifier = Modifier, trailing: () -> Unit) { }
@Composable
fun MyComposable(text1: String, modifier: Modifier = Modifier, m2: Modifier = Modifier, trailing: (() -> Unit)?) { }
""".trimIndent()
val errors = rule.lint(code)
assertThat(errors).isEmpty()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ class ComposeParameterOrderCheckTest {
@Composable
fun MyComposable(text1: String, modifier: Modifier = Modifier, m2: Modifier = Modifier, trailing: () -> Unit) { }
@Composable
fun MyComposable(text1: String, modifier: Modifier = Modifier, m2: Modifier = Modifier, trailing: (() -> Unit)?) { }
""".trimIndent()
orderingRuleAssertThat(code).hasNoLintViolations()
}
Expand Down

0 comments on commit a36890f

Please sign in to comment.