Skip to content

Commit 198d62a

Browse files
authored
Deprecate DatePeriod.plus and DateTimePeriod.plus (#449)
Fixes #381
1 parent 1123e14 commit 198d62a

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

core/common/src/DateTimePeriod.kt

+8
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,10 @@ public fun Duration.toDateTimePeriod(): DateTimePeriod = buildDateTimePeriod(tot
581581
*
582582
* @throws DateTimeArithmeticException if arithmetic overflow happens.
583583
*/
584+
@Deprecated(
585+
"Adding periods is not a well-defined operation. See https://github.com/Kotlin/kotlinx-datetime/issues/381",
586+
level = DeprecationLevel.WARNING
587+
)
584588
public operator fun DateTimePeriod.plus(other: DateTimePeriod): DateTimePeriod = buildDateTimePeriod(
585589
safeAdd(totalMonths, other.totalMonths),
586590
safeAdd(days, other.days),
@@ -595,6 +599,10 @@ public operator fun DateTimePeriod.plus(other: DateTimePeriod): DateTimePeriod =
595599
*
596600
* @throws DateTimeArithmeticException if arithmetic overflow happens.
597601
*/
602+
@Deprecated(
603+
"Adding periods is not a well-defined operation. See https://github.com/Kotlin/kotlinx-datetime/issues/381",
604+
level = DeprecationLevel.WARNING
605+
)
598606
public operator fun DatePeriod.plus(other: DatePeriod): DatePeriod = DatePeriod(
599607
safeAdd(totalMonths, other.totalMonths),
600608
safeAdd(days, other.days),

core/common/test/DateTimePeriodTest.kt

+11-8
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,17 @@ class DateTimePeriodTest {
148148

149149
val dp1 = DatePeriod(years = 1, months = 6)
150150

151-
assertEquals(DateTimePeriod(years = 10, days = 3, hours = 2), p1 + p2 + p3)
152-
assertEquals(DatePeriod(years = 11, months = 6), dp1 + p1)
153-
assertEquals(DatePeriod(years = 2, months = 12), dp1 + dp1)
154-
assertEquals(DateTimePeriod(years = 1, months = 6, days = 3), p2 + dp1)
155-
156-
val dp2 = dp1 + p3 + p4
157-
assertEquals(dp1, dp2)
158-
assertTrue(dp2 is DatePeriod)
151+
@Suppress("DEPRECATION")
152+
run {
153+
assertEquals(DateTimePeriod(years = 10, days = 3, hours = 2), p1 + p2 + p3)
154+
assertEquals(DatePeriod(years = 11, months = 6), dp1 + p1)
155+
assertEquals(DatePeriod(years = 2, months = 12), dp1 + dp1)
156+
assertEquals(DateTimePeriod(years = 1, months = 6, days = 3), p2 + dp1)
157+
158+
val dp2 = dp1 + p3 + p4
159+
assertEquals(dp1, dp2)
160+
assertTrue(dp2 is DatePeriod)
161+
}
159162
}
160163

161164
@Test

0 commit comments

Comments
 (0)