Skip to content

0.9.1

Latest

Choose a tag to compare

@sergio-sastre sergio-sastre released this 06 Jul 18:21
7ed67e4

Bugfixes

getDisplayName

#135 Fix getDisplayName when inherited or returning non-null String.
for instance, the following cases were not returning the expected displayName but null instead:

1.1 Non-null String as return type

private class AndroidStringProviderWithNonNullableDisplayName : PreviewParameterProvider<String> {
   ...
   // This returned null incorrectly, only worked when String?
    override fun getDisplayName(index: Int): String { 
       ...
    }
}

1.2 inherited

private class AndroidStringProviderWithInterfaceInheritedDisplayName : ProviderWithDisplayNameDefault {
    override val values: Sequence<String>
        get() = ...
}

// getDisplayName is only declared on an abstract superclass, so subclasses inherit it
private abstract class BaseProviderWithDisplayName : PreviewParameterProvider<String> {
    override fun getDisplayName(index: Int): String? {
       ...
    }
}

count in PreviewParameterProvider was ignored

For instance:

class StringCountLessThanLimitParameterProvider(
    override val values: Sequence<String?> = stringValues,
    override val count: Int = 1,
) : PreviewParameterProvider<String?>

would take as many Previews as in values or limit if used. Now it takes the min between count and limit (negatives default to 0)

Negative limit in PreviewParameterProvider annotation would crash.

For instance:

@Preview(group = "preview-parameter-limit=-1")
@Composable
fun ExamplePreviewLimitMinus1(
    @PreviewParameter(provider = AndroidStringProvider::class, limit = -1) name: String?
){
    Example(name)
}

this would crash in previous versions. Now it takes 0 Previews.

Special thanks to @zaburen for reporting and fixing #135!