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.