File tree Expand file tree Collapse file tree 3 files changed +40
-4
lines changed
common/src/main/kotlin/com/twitter/compose/rules Expand file tree Collapse file tree 3 files changed +40
-4
lines changed Original file line number Diff line number Diff line change @@ -15,11 +15,12 @@ class ComposePreviewPublic : ComposeKtVisitor {
1515 override fun visitComposable (function : KtFunction , autoCorrect : Boolean , emitter : Emitter ) {
1616 // We only want previews
1717 if (! function.isPreview) return
18- // ...that if it is public, none of it's params is tagged as preview
19- if (function.isPublic && function.valueParameters.none { it.isPreviewParameter } ) return
20- // ...and if it isn't public, all params are tagged as preview
21- if (! function.isPublic && function. valueParameters.all { it.isPreviewParameter }) return
18+ // We only care about public methods
19+ if (! function.isPublic) return
20+ // If the method is public, none of it's params should be tagged as preview
21+ if (function.valueParameters.none { it.isPreviewParameter }) return
2222
23+ // If we got here, it's a public method in a @Preview composable with a @PreviewParameter parameter
2324 emitter.report(function, ComposablesPreviewShouldNotBePublic , true )
2425 if (autoCorrect) {
2526 function.addModifier(KtTokens .PRIVATE_KEYWORD )
Original file line number Diff line number Diff line change @@ -57,6 +57,24 @@ class ComposePreviewPublicCheckTest {
5757 }
5858 }
5959
60+ @Test
61+ fun `passes when a non-public preview composable uses preview params` () {
62+ @Language(" kotlin" )
63+ val code =
64+ """
65+ @Preview
66+ @Composable
67+ private fun MyComposable(@PreviewParameter(User::class) user: User) {
68+ }
69+ @Preview
70+ @Composable
71+ internal fun MyComposable(@PreviewParameter(User::class) user: User) {
72+ }
73+ """ .trimIndent()
74+ val errors = rule.lint(code)
75+ assertThat(errors).isEmpty()
76+ }
77+
6078 @Test
6179 fun `passes when a private preview composable uses preview params` () {
6280 @Language(" kotlin" )
Original file line number Diff line number Diff line change @@ -51,6 +51,23 @@ class ComposePreviewPublicCheckTest {
5151 )
5252 }
5353
54+ @Test
55+ fun `passes when a non-public preview composable uses preview params` () {
56+ @Language(" kotlin" )
57+ val code =
58+ """
59+ @Preview
60+ @Composable
61+ private fun MyComposable(@PreviewParameter(User::class) user: User) {
62+ }
63+ @Preview
64+ @Composable
65+ internal fun MyComposable(@PreviewParameter(User::class) user: User) {
66+ }
67+ """ .trimIndent()
68+ ruleAssertThat(code).hasNoLintViolations()
69+ }
70+
5471 @Test
5572 fun `autofix makes private the public preview` () {
5673 @Language(" kotlin" )
You can’t perform that action at this time.
0 commit comments