-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add binary compatibility checks (closes #48)
- Loading branch information
Showing
15 changed files
with
1,328 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
name: Run tests | ||
name: Test the codebase | ||
on: [ push, pull_request ] | ||
|
||
jobs: | ||
test: | ||
name: Run tests | ||
name: Run unit tests | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
|
@@ -21,5 +21,27 @@ jobs: | |
- name: Setup Gradle | ||
uses: gradle/[email protected] | ||
|
||
- name: Build with Gradle | ||
- name: Build and run tests | ||
run: ./gradlew allTests test --info | ||
|
||
binary-compatibility: | ||
name: Check binary compatibility | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: 17 | ||
distribution: zulu | ||
|
||
- name: Validate Gradle wrapper | ||
uses: gradle/wrapper-validation-action@v1 | ||
|
||
- name: Setup Gradle | ||
uses: gradle/[email protected] | ||
|
||
- name: Build and check compatibility | ||
run: ./gradlew apiCheck |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
public final class dev/nesk/akkurate/arrow/ArrowKt { | ||
public static final fun bind (Larrow/core/raise/Raise;Ldev/nesk/akkurate/ValidationResult;)Ljava/lang/Object; | ||
public static final fun toEither (Ldev/nesk/akkurate/ValidationResult;)Larrow/core/Either; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
// Klib ABI Dump | ||
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosSimulatorArm64, watchosX64] | ||
// Rendering settings: | ||
// - Signature version: 2 | ||
// - Show manifest properties: true | ||
// - Show declarations: true | ||
|
||
// Library unique name: <dev.nesk.akkurate:akkurate-arrow> | ||
final fun <#A: kotlin/Any?> (arrow.core.raise/Raise<arrow.core/NonEmptySet<dev.nesk.akkurate.constraints/ConstraintViolation>>).dev.nesk.akkurate.arrow/bind(dev.nesk.akkurate/ValidationResult<#A>): #A // dev.nesk.akkurate.arrow/bind|[email protected]<arrow.core.NonEmptySet<dev.nesk.akkurate.constraints.ConstraintViolation>>(dev.nesk.akkurate.ValidationResult<0:0>){0§<kotlin.Any?>}[0] | ||
final fun <#A: kotlin/Any?> (dev.nesk.akkurate/ValidationResult<#A>).dev.nesk.akkurate.arrow/toEither(): arrow.core/Either<arrow.core/NonEmptySet<dev.nesk.akkurate.constraints/ConstraintViolation>, #A> // dev.nesk.akkurate.arrow/toEither|[email protected]<0:0>(){0§<kotlin.Any?>}[0] |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
35 changes: 35 additions & 0 deletions
35
akkurate-kotlinx-datetime/api/akkurate-kotlinx-datetime.api
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
public final class dev/nesk/akkurate/constraints/builders/KotlinxDatetimeKt { | ||
public static final fun instantFuture (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun instantIsInFutureOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun instantIsInPast (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun instantIsInPastOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfter (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/Instant;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfter (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDate;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfter (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDateTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfter (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfterOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/Instant;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfterOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDate;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfterOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDateTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isAfterOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBefore (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/Instant;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBefore (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDate;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBefore (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDateTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBefore (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBeforeOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/Instant;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBeforeOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDate;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBeforeOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalDateTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun isBeforeOrEqualTo (Ldev/nesk/akkurate/validatables/Validatable;Lkotlinx/datetime/LocalTime;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateFuture (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateIsInFutureOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateIsInPast (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateIsInPastOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateTimeFuture (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateTimeIsInFutureOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateTimeIsInPast (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localDateTimeIsInPastOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localTimeFuture (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localTimeIsInFutureOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localTimeIsInPast (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
public static final fun localTimeIsInPastOrIsPresent (Ldev/nesk/akkurate/validatables/Validatable;)Ldev/nesk/akkurate/constraints/Constraint; | ||
} | ||
|
40 changes: 40 additions & 0 deletions
40
akkurate-kotlinx-datetime/api/akkurate-kotlinx-datetime.klib.api
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// Klib ABI Dump | ||
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] | ||
// Rendering settings: | ||
// - Signature version: 2 | ||
// - Show manifest properties: true | ||
// - Show declarations: true | ||
|
||
// Library unique name: <dev.nesk.akkurate:akkurate-kotlinx-datetime> | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isAfter(kotlinx.datetime/Instant): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfter|[email protected]<kotlinx.datetime.Instant?>(kotlinx.datetime.Instant){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo(kotlinx.datetime/Instant): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo|[email protected]<kotlinx.datetime.Instant?>(kotlinx.datetime.Instant){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isBefore(kotlinx.datetime/Instant): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBefore|[email protected]<kotlinx.datetime.Instant?>(kotlinx.datetime.Instant){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo(kotlinx.datetime/Instant): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo|[email protected]<kotlinx.datetime.Instant?>(kotlinx.datetime.Instant){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isInFuture(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFuture|[email protected]<kotlinx.datetime.Instant?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent|[email protected]<kotlinx.datetime.Instant?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isInPast(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPast|[email protected]<kotlinx.datetime.Instant?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/Instant?>).dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent|[email protected]<kotlinx.datetime.Instant?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isAfter(kotlinx.datetime/LocalDate): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfter|[email protected]<kotlinx.datetime.LocalDate?>(kotlinx.datetime.LocalDate){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo(kotlinx.datetime/LocalDate): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo|[email protected]<kotlinx.datetime.LocalDate?>(kotlinx.datetime.LocalDate){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isBefore(kotlinx.datetime/LocalDate): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBefore|[email protected]<kotlinx.datetime.LocalDate?>(kotlinx.datetime.LocalDate){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo(kotlinx.datetime/LocalDate): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo|[email protected]<kotlinx.datetime.LocalDate?>(kotlinx.datetime.LocalDate){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isInFuture(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFuture|[email protected]<kotlinx.datetime.LocalDate?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent|[email protected]<kotlinx.datetime.LocalDate?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isInPast(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPast|[email protected]<kotlinx.datetime.LocalDate?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDate?>).dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent|[email protected]<kotlinx.datetime.LocalDate?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isAfter(kotlinx.datetime/LocalDateTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfter|[email protected]<kotlinx.datetime.LocalDateTime?>(kotlinx.datetime.LocalDateTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo(kotlinx.datetime/LocalDateTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo|[email protected]<kotlinx.datetime.LocalDateTime?>(kotlinx.datetime.LocalDateTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isBefore(kotlinx.datetime/LocalDateTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBefore|[email protected]<kotlinx.datetime.LocalDateTime?>(kotlinx.datetime.LocalDateTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo(kotlinx.datetime/LocalDateTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo|[email protected]<kotlinx.datetime.LocalDateTime?>(kotlinx.datetime.LocalDateTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isInFuture(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFuture|[email protected]<kotlinx.datetime.LocalDateTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent|[email protected]<kotlinx.datetime.LocalDateTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isInPast(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPast|[email protected]<kotlinx.datetime.LocalDateTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalDateTime?>).dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent|[email protected]<kotlinx.datetime.LocalDateTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isAfter(kotlinx.datetime/LocalTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfter|[email protected]<kotlinx.datetime.LocalTime?>(kotlinx.datetime.LocalTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo(kotlinx.datetime/LocalTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isAfterOrEqualTo|[email protected]<kotlinx.datetime.LocalTime?>(kotlinx.datetime.LocalTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isBefore(kotlinx.datetime/LocalTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBefore|[email protected]<kotlinx.datetime.LocalTime?>(kotlinx.datetime.LocalTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo(kotlinx.datetime/LocalTime): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isBeforeOrEqualTo|[email protected]<kotlinx.datetime.LocalTime?>(kotlinx.datetime.LocalTime){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isInFuture(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFuture|[email protected]<kotlinx.datetime.LocalTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInFutureOrIsPresent|[email protected]<kotlinx.datetime.LocalTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isInPast(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPast|[email protected]<kotlinx.datetime.LocalTime?>(){}[0] | ||
final fun (dev.nesk.akkurate.validatables/Validatable<kotlinx.datetime/LocalTime?>).dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent(): dev.nesk.akkurate.constraints/Constraint // dev.nesk.akkurate.constraints.builders/isInPastOrIsPresent|[email protected]<kotlinx.datetime.LocalTime?>(){}[0] |
Oops, something went wrong.