Skip to content

Commit 0adb6e1

Browse files
Enable ABI validation (#143)
Closes #98
1 parent af4f1c4 commit 0adb6e1

File tree

4 files changed

+168
-0
lines changed

4 files changed

+168
-0
lines changed

.github/workflows/test.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,14 @@ jobs:
6060
distribution: 'zulu'
6161
java-version-file: .github/.java-version
6262
- run: ./gradlew kmpMissingTargets
63+
64+
abi-validation:
65+
runs-on: macOS-latest
66+
steps:
67+
- uses: actions/checkout@v4
68+
- uses: actions/setup-java@v4
69+
with:
70+
distribution: 'zulu'
71+
java-version: 19
72+
- run: ./gradlew checkLegacyAbi
73+

api/cardiologist.api

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
public final class io/github/kevincianfarini/cardiologist/Pulse {
2+
public static final fun beat-impl (Lkotlinx/coroutines/flow/Flow;Lio/github/kevincianfarini/cardiologist/PulseBackpressureStrategy;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3+
public static synthetic fun beat-impl$default (Lkotlinx/coroutines/flow/Flow;Lio/github/kevincianfarini/cardiologist/PulseBackpressureStrategy;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
4+
public static final synthetic fun box-impl (Lkotlinx/coroutines/flow/Flow;)Lio/github/kevincianfarini/cardiologist/Pulse;
5+
public fun equals (Ljava/lang/Object;)Z
6+
public static fun equals-impl (Lkotlinx/coroutines/flow/Flow;Ljava/lang/Object;)Z
7+
public static final fun equals-impl0 (Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/Flow;)Z
8+
public fun hashCode ()I
9+
public static fun hashCode-impl (Lkotlinx/coroutines/flow/Flow;)I
10+
public static final fun take-xIqdNEc (Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/Flow;
11+
public static final fun takeWhile-xIqdNEc (Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow;
12+
public fun toString ()Ljava/lang/String;
13+
public static fun toString-impl (Lkotlinx/coroutines/flow/Flow;)Ljava/lang/String;
14+
public final synthetic fun unbox-impl ()Lkotlinx/coroutines/flow/Flow;
15+
}
16+
17+
public final class io/github/kevincianfarini/cardiologist/PulseBackpressureStrategy {
18+
public static final field Companion Lio/github/kevincianfarini/cardiologist/PulseBackpressureStrategy$Companion;
19+
public fun toString ()Ljava/lang/String;
20+
}
21+
22+
public final class io/github/kevincianfarini/cardiologist/PulseBackpressureStrategy$Companion {
23+
public final fun getCancelPrevious ()Lio/github/kevincianfarini/cardiologist/PulseBackpressureStrategy;
24+
public final fun getExecuteConcurrently ()Lio/github/kevincianfarini/cardiologist/PulseBackpressureStrategy;
25+
public final fun getSkipNext ()Lio/github/kevincianfarini/cardiologist/PulseBackpressureStrategy;
26+
}
27+
28+
public final class io/github/kevincianfarini/cardiologist/PulseSchedule {
29+
public fun <init> (Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;)V
30+
public fun equals (Ljava/lang/Object;)Z
31+
public final fun getAtHours ()Ljava/util/Set;
32+
public final fun getAtMinutes ()Ljava/util/Set;
33+
public final fun getAtSeconds ()Ljava/util/Set;
34+
public final fun getInMonths ()Ljava/util/Set;
35+
public final fun getOnDaysOfMonth ()Ljava/util/Set;
36+
public final fun getOnDaysOfWeek ()Ljava/util/Set;
37+
public fun hashCode ()I
38+
public fun toString ()Ljava/lang/String;
39+
}
40+
41+
public final class io/github/kevincianfarini/cardiologist/PulseScheduleBuilder {
42+
public final fun atHours (I[I)V
43+
public final fun atHours (Lkotlin/ranges/IntRange;[Lkotlin/ranges/IntRange;)V
44+
public final fun atMinutes (I[I)V
45+
public final fun atMinutes (Lkotlin/ranges/IntRange;[Lkotlin/ranges/IntRange;)V
46+
public final fun atSeconds (I[I)V
47+
public final fun atSeconds (Lkotlin/ranges/IntRange;[Lkotlin/ranges/IntRange;)V
48+
public final fun inMonths (Lkotlin/ranges/ClosedRange;[Lkotlin/ranges/ClosedRange;)V
49+
public final fun inMonths (Lkotlinx/datetime/Month;[Lkotlinx/datetime/Month;)V
50+
public final fun onDaysOfMonth (I[I)V
51+
public final fun onDaysOfMonth (Lkotlin/ranges/IntRange;[Lkotlin/ranges/IntRange;)V
52+
public final fun onDaysOfWeek (Lkotlin/ranges/ClosedRange;[Lkotlin/ranges/ClosedRange;)V
53+
public final fun onDaysOfWeek (Lkotlinx/datetime/DayOfWeek;[Lkotlinx/datetime/DayOfWeek;)V
54+
}
55+
56+
public final class io/github/kevincianfarini/cardiologist/PulseScheduleKt {
57+
public static final fun buildPulseSchedule (Lkotlin/jvm/functions/Function1;)Lio/github/kevincianfarini/cardiologist/PulseSchedule;
58+
}
59+
60+
public final class io/github/kevincianfarini/cardiologist/ScheduleKt {
61+
public static final fun fixedPeriodPulse (Lkotlin/time/Clock;Lkotlinx/datetime/DateTimePeriod;Lkotlinx/datetime/TimeZone;)Lkotlinx/coroutines/flow/Flow;
62+
public static final fun fixedPeriodPulse-HG0u8IE (Lkotlin/time/Clock;J)Lkotlinx/coroutines/flow/Flow;
63+
public static final fun schedulePulse (Lkotlin/time/Clock;Lio/github/kevincianfarini/cardiologist/PulseSchedule;Lkotlinx/datetime/TimeZone;)Lkotlinx/coroutines/flow/Flow;
64+
public static final fun schedulePulse (Lkotlin/time/Clock;Ljava/lang/String;Lkotlinx/datetime/TimeZone;)Lkotlinx/coroutines/flow/Flow;
65+
public static final fun schedulePulse (Lkotlin/time/Clock;Lkotlinx/datetime/TimeZone;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlinx/datetime/Month;Lkotlinx/datetime/DayOfWeek;)Lkotlinx/coroutines/flow/Flow;
66+
public static final fun schedulePulse (Lkotlin/time/Clock;Lkotlinx/datetime/TimeZone;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow;
67+
public static synthetic fun schedulePulse$default (Lkotlin/time/Clock;Lio/github/kevincianfarini/cardiologist/PulseSchedule;Lkotlinx/datetime/TimeZone;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
68+
public static synthetic fun schedulePulse$default (Lkotlin/time/Clock;Ljava/lang/String;Lkotlinx/datetime/TimeZone;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
69+
public static synthetic fun schedulePulse$default (Lkotlin/time/Clock;Lkotlinx/datetime/TimeZone;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Lkotlinx/datetime/Month;Lkotlinx/datetime/DayOfWeek;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
70+
public static synthetic fun schedulePulse$default (Lkotlin/time/Clock;Lkotlinx/datetime/TimeZone;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
71+
}
72+
73+
public final class io/github/kevincianfarini/cardiologist/SuspendKt {
74+
public static final fun executeAt (Lkotlin/time/Clock;Lkotlin/time/Instant;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
75+
public static final fun executeAt (Lkotlin/time/Clock;Lkotlinx/datetime/LocalDateTime;Lkotlinx/datetime/TimeZone;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
76+
}
77+

api/cardiologist.klib.api

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
// Klib ABI Dump
2+
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
3+
// Rendering settings:
4+
// - Signature version: 2
5+
// - Show manifest properties: true
6+
// - Show declarations: true
7+
8+
// Library unique name: <cardiologist>
9+
final class io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy { // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy|null[0]
10+
final fun toString(): kotlin/String // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.toString|toString(){}[0]
11+
12+
final object Companion { // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion|null[0]
13+
final val CancelPrevious // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion.CancelPrevious|{}CancelPrevious[0]
14+
final fun <get-CancelPrevious>(): io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion.CancelPrevious.<get-CancelPrevious>|<get-CancelPrevious>(){}[0]
15+
final val ExecuteConcurrently // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion.ExecuteConcurrently|{}ExecuteConcurrently[0]
16+
final fun <get-ExecuteConcurrently>(): io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion.ExecuteConcurrently.<get-ExecuteConcurrently>|<get-ExecuteConcurrently>(){}[0]
17+
final val SkipNext // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion.SkipNext|{}SkipNext[0]
18+
final fun <get-SkipNext>(): io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy // io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy.Companion.SkipNext.<get-SkipNext>|<get-SkipNext>(){}[0]
19+
}
20+
}
21+
22+
final class io.github.kevincianfarini.cardiologist/PulseSchedule { // io.github.kevincianfarini.cardiologist/PulseSchedule|null[0]
23+
constructor <init>(kotlin.collections/Set<kotlin/Int>, kotlin.collections/Set<kotlin/Int>, kotlin.collections/Set<kotlin/Int>, kotlin.collections/Set<kotlin/Int>, kotlin.collections/Set<kotlinx.datetime/Month>, kotlin.collections/Set<kotlinx.datetime/DayOfWeek>) // io.github.kevincianfarini.cardiologist/PulseSchedule.<init>|<init>(kotlin.collections.Set<kotlin.Int>;kotlin.collections.Set<kotlin.Int>;kotlin.collections.Set<kotlin.Int>;kotlin.collections.Set<kotlin.Int>;kotlin.collections.Set<kotlinx.datetime.Month>;kotlin.collections.Set<kotlinx.datetime.DayOfWeek>){}[0]
24+
25+
final val atHours // io.github.kevincianfarini.cardiologist/PulseSchedule.atHours|{}atHours[0]
26+
final fun <get-atHours>(): kotlin.collections/Set<kotlin/Int> // io.github.kevincianfarini.cardiologist/PulseSchedule.atHours.<get-atHours>|<get-atHours>(){}[0]
27+
final val atMinutes // io.github.kevincianfarini.cardiologist/PulseSchedule.atMinutes|{}atMinutes[0]
28+
final fun <get-atMinutes>(): kotlin.collections/Set<kotlin/Int> // io.github.kevincianfarini.cardiologist/PulseSchedule.atMinutes.<get-atMinutes>|<get-atMinutes>(){}[0]
29+
final val atSeconds // io.github.kevincianfarini.cardiologist/PulseSchedule.atSeconds|{}atSeconds[0]
30+
final fun <get-atSeconds>(): kotlin.collections/Set<kotlin/Int> // io.github.kevincianfarini.cardiologist/PulseSchedule.atSeconds.<get-atSeconds>|<get-atSeconds>(){}[0]
31+
final val inMonths // io.github.kevincianfarini.cardiologist/PulseSchedule.inMonths|{}inMonths[0]
32+
final fun <get-inMonths>(): kotlin.collections/Set<kotlinx.datetime/Month> // io.github.kevincianfarini.cardiologist/PulseSchedule.inMonths.<get-inMonths>|<get-inMonths>(){}[0]
33+
final val onDaysOfMonth // io.github.kevincianfarini.cardiologist/PulseSchedule.onDaysOfMonth|{}onDaysOfMonth[0]
34+
final fun <get-onDaysOfMonth>(): kotlin.collections/Set<kotlin/Int> // io.github.kevincianfarini.cardiologist/PulseSchedule.onDaysOfMonth.<get-onDaysOfMonth>|<get-onDaysOfMonth>(){}[0]
35+
final val onDaysOfWeek // io.github.kevincianfarini.cardiologist/PulseSchedule.onDaysOfWeek|{}onDaysOfWeek[0]
36+
final fun <get-onDaysOfWeek>(): kotlin.collections/Set<kotlinx.datetime/DayOfWeek> // io.github.kevincianfarini.cardiologist/PulseSchedule.onDaysOfWeek.<get-onDaysOfWeek>|<get-onDaysOfWeek>(){}[0]
37+
38+
final fun equals(kotlin/Any?): kotlin/Boolean // io.github.kevincianfarini.cardiologist/PulseSchedule.equals|equals(kotlin.Any?){}[0]
39+
final fun hashCode(): kotlin/Int // io.github.kevincianfarini.cardiologist/PulseSchedule.hashCode|hashCode(){}[0]
40+
final fun toString(): kotlin/String // io.github.kevincianfarini.cardiologist/PulseSchedule.toString|toString(){}[0]
41+
}
42+
43+
final class io.github.kevincianfarini.cardiologist/PulseScheduleBuilder { // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder|null[0]
44+
final fun atHours(kotlin.ranges/IntRange, kotlin/Array<out kotlin.ranges/IntRange>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.atHours|atHours(kotlin.ranges.IntRange;kotlin.Array<out|kotlin.ranges.IntRange>...){}[0]
45+
final fun atHours(kotlin/Int, kotlin/IntArray...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.atHours|atHours(kotlin.Int;kotlin.IntArray...){}[0]
46+
final fun atMinutes(kotlin.ranges/IntRange, kotlin/Array<out kotlin.ranges/IntRange>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.atMinutes|atMinutes(kotlin.ranges.IntRange;kotlin.Array<out|kotlin.ranges.IntRange>...){}[0]
47+
final fun atMinutes(kotlin/Int, kotlin/IntArray...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.atMinutes|atMinutes(kotlin.Int;kotlin.IntArray...){}[0]
48+
final fun atSeconds(kotlin.ranges/IntRange, kotlin/Array<out kotlin.ranges/IntRange>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.atSeconds|atSeconds(kotlin.ranges.IntRange;kotlin.Array<out|kotlin.ranges.IntRange>...){}[0]
49+
final fun atSeconds(kotlin/Int, kotlin/IntArray...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.atSeconds|atSeconds(kotlin.Int;kotlin.IntArray...){}[0]
50+
final fun inMonths(kotlin.ranges/ClosedRange<kotlinx.datetime/Month>, kotlin/Array<out kotlin.ranges/ClosedRange<kotlinx.datetime/Month>>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.inMonths|inMonths(kotlin.ranges.ClosedRange<kotlinx.datetime.Month>;kotlin.Array<out|kotlin.ranges.ClosedRange<kotlinx.datetime.Month>>...){}[0]
51+
final fun inMonths(kotlinx.datetime/Month, kotlin/Array<out kotlinx.datetime/Month>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.inMonths|inMonths(kotlinx.datetime.Month;kotlin.Array<out|kotlinx.datetime.Month>...){}[0]
52+
final fun onDaysOfMonth(kotlin.ranges/IntRange, kotlin/Array<out kotlin.ranges/IntRange>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.onDaysOfMonth|onDaysOfMonth(kotlin.ranges.IntRange;kotlin.Array<out|kotlin.ranges.IntRange>...){}[0]
53+
final fun onDaysOfMonth(kotlin/Int, kotlin/IntArray...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.onDaysOfMonth|onDaysOfMonth(kotlin.Int;kotlin.IntArray...){}[0]
54+
final fun onDaysOfWeek(kotlin.ranges/ClosedRange<kotlinx.datetime/DayOfWeek>, kotlin/Array<out kotlin.ranges/ClosedRange<kotlinx.datetime/DayOfWeek>>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.onDaysOfWeek|onDaysOfWeek(kotlin.ranges.ClosedRange<kotlinx.datetime.DayOfWeek>;kotlin.Array<out|kotlin.ranges.ClosedRange<kotlinx.datetime.DayOfWeek>>...){}[0]
55+
final fun onDaysOfWeek(kotlinx.datetime/DayOfWeek, kotlin/Array<out kotlinx.datetime/DayOfWeek>...) // io.github.kevincianfarini.cardiologist/PulseScheduleBuilder.onDaysOfWeek|onDaysOfWeek(kotlinx.datetime.DayOfWeek;kotlin.Array<out|kotlinx.datetime.DayOfWeek>...){}[0]
56+
}
57+
58+
final value class io.github.kevincianfarini.cardiologist/Pulse { // io.github.kevincianfarini.cardiologist/Pulse|null[0]
59+
final fun equals(kotlin/Any?): kotlin/Boolean // io.github.kevincianfarini.cardiologist/Pulse.equals|equals(kotlin.Any?){}[0]
60+
final fun hashCode(): kotlin/Int // io.github.kevincianfarini.cardiologist/Pulse.hashCode|hashCode(){}[0]
61+
final fun take(kotlin/Int): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/Pulse.take|take(kotlin.Int){}[0]
62+
final fun takeWhile(kotlin/Function1<kotlin.time/Instant, kotlin/Boolean>): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/Pulse.takeWhile|takeWhile(kotlin.Function1<kotlin.time.Instant,kotlin.Boolean>){}[0]
63+
final fun toString(): kotlin/String // io.github.kevincianfarini.cardiologist/Pulse.toString|toString(){}[0]
64+
final suspend fun beat(io.github.kevincianfarini.cardiologist/PulseBackpressureStrategy = ..., kotlin.coroutines/SuspendFunction1<kotlin.time/Instant, kotlin/Unit>) // io.github.kevincianfarini.cardiologist/Pulse.beat|beat(io.github.kevincianfarini.cardiologist.PulseBackpressureStrategy;kotlin.coroutines.SuspendFunction1<kotlin.time.Instant,kotlin.Unit>){}[0]
65+
}
66+
67+
final fun (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/fixedPeriodPulse(kotlin.time/Duration): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/fixedPeriodPulse|fixedPeriodPulse@kotlin.time.Clock(kotlin.time.Duration){}[0]
68+
final fun (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/fixedPeriodPulse(kotlinx.datetime/DateTimePeriod, kotlinx.datetime/TimeZone): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/fixedPeriodPulse|fixedPeriodPulse@kotlin.time.Clock(kotlinx.datetime.DateTimePeriod;kotlinx.datetime.TimeZone){}[0]
69+
final fun (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/schedulePulse(io.github.kevincianfarini.cardiologist/PulseSchedule, kotlinx.datetime/TimeZone = ...): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/schedulePulse|schedulePulse@kotlin.time.Clock(io.github.kevincianfarini.cardiologist.PulseSchedule;kotlinx.datetime.TimeZone){}[0]
70+
final fun (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/schedulePulse(kotlin/String, kotlinx.datetime/TimeZone = ...): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/schedulePulse|schedulePulse@kotlin.time.Clock(kotlin.String;kotlinx.datetime.TimeZone){}[0]
71+
final fun (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/schedulePulse(kotlinx.datetime/TimeZone = ..., kotlin/Function1<io.github.kevincianfarini.cardiologist/PulseScheduleBuilder, kotlin/Unit>): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/schedulePulse|schedulePulse@kotlin.time.Clock(kotlinx.datetime.TimeZone;kotlin.Function1<io.github.kevincianfarini.cardiologist.PulseScheduleBuilder,kotlin.Unit>){}[0]
72+
final fun (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/schedulePulse(kotlinx.datetime/TimeZone = ..., kotlin/Int? = ..., kotlin/Int? = ..., kotlin/Int? = ..., kotlin/Int? = ..., kotlinx.datetime/Month? = ..., kotlinx.datetime/DayOfWeek? = ...): io.github.kevincianfarini.cardiologist/Pulse // io.github.kevincianfarini.cardiologist/schedulePulse|schedulePulse@kotlin.time.Clock(kotlinx.datetime.TimeZone;kotlin.Int?;kotlin.Int?;kotlin.Int?;kotlin.Int?;kotlinx.datetime.Month?;kotlinx.datetime.DayOfWeek?){}[0]
73+
final fun io.github.kevincianfarini.cardiologist/buildPulseSchedule(kotlin/Function1<io.github.kevincianfarini.cardiologist/PulseScheduleBuilder, kotlin/Unit>): io.github.kevincianfarini.cardiologist/PulseSchedule // io.github.kevincianfarini.cardiologist/buildPulseSchedule|buildPulseSchedule(kotlin.Function1<io.github.kevincianfarini.cardiologist.PulseScheduleBuilder,kotlin.Unit>){}[0]
74+
final suspend fun <#A: kotlin/Any?> (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/executeAt(kotlin.time/Instant, kotlin.coroutines/SuspendFunction0<#A>): #A // io.github.kevincianfarini.cardiologist/executeAt|executeAt@kotlin.time.Clock(kotlin.time.Instant;kotlin.coroutines.SuspendFunction0<0:0>){0§<kotlin.Any?>}[0]
75+
final suspend fun <#A: kotlin/Any?> (kotlin.time/Clock).io.github.kevincianfarini.cardiologist/executeAt(kotlinx.datetime/LocalDateTime, kotlinx.datetime/TimeZone, kotlin.coroutines/SuspendFunction0<#A>): #A // io.github.kevincianfarini.cardiologist/executeAt|executeAt@kotlin.time.Clock(kotlinx.datetime.LocalDateTime;kotlinx.datetime.TimeZone;kotlin.coroutines.SuspendFunction0<0:0>){0§<kotlin.Any?>}[0]

build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
@file:OptIn(ExperimentalAbiValidation::class)
2+
13
import com.vanniktech.maven.publish.SonatypeHost
24
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
35
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
6+
import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation
47

58
plugins {
69
alias(libs.plugins.dokka)
@@ -15,6 +18,8 @@ kotlin {
1518
compilerOptions { allWarningsAsErrors.set(true) }
1619
explicitApi()
1720

21+
abiValidation { enabled = true }
22+
1823
androidNativeArm32()
1924
androidNativeArm64()
2025
androidNativeX64()

0 commit comments

Comments
 (0)