diff --git a/core/common/src/DateTimePeriod.kt b/core/common/src/DateTimePeriod.kt index f9b2d3f3b..b54f183f3 100644 --- a/core/common/src/DateTimePeriod.kt +++ b/core/common/src/DateTimePeriod.kt @@ -577,6 +577,10 @@ public fun Duration.toDateTimePeriod(): DateTimePeriod = buildDateTimePeriod(tot * * @throws DateTimeArithmeticException if arithmetic overflow happens. */ +@Deprecated( + "Adding periods is not a well-defined operation. See https://github.com/Kotlin/kotlinx-datetime/issues/381", + level = DeprecationLevel.WARNING +) public operator fun DateTimePeriod.plus(other: DateTimePeriod): DateTimePeriod = buildDateTimePeriod( safeAdd(totalMonths, other.totalMonths), safeAdd(days, other.days), @@ -591,6 +595,10 @@ public operator fun DateTimePeriod.plus(other: DateTimePeriod): DateTimePeriod = * * @throws DateTimeArithmeticException if arithmetic overflow happens. */ +@Deprecated( + "Adding periods is not a well-defined operation. See https://github.com/Kotlin/kotlinx-datetime/issues/381", + level = DeprecationLevel.WARNING +) public operator fun DatePeriod.plus(other: DatePeriod): DatePeriod = DatePeriod( safeAdd(totalMonths, other.totalMonths), safeAdd(days, other.days), diff --git a/core/common/test/DateTimePeriodTest.kt b/core/common/test/DateTimePeriodTest.kt index ccf516c03..25581396c 100644 --- a/core/common/test/DateTimePeriodTest.kt +++ b/core/common/test/DateTimePeriodTest.kt @@ -144,14 +144,17 @@ class DateTimePeriodTest { val dp1 = DatePeriod(years = 1, months = 6) - assertEquals(DateTimePeriod(years = 10, days = 3, hours = 2), p1 + p2 + p3) - assertEquals(DatePeriod(years = 11, months = 6), dp1 + p1) - assertEquals(DatePeriod(years = 2, months = 12), dp1 + dp1) - assertEquals(DateTimePeriod(years = 1, months = 6, days = 3), p2 + dp1) - - val dp2 = dp1 + p3 + p4 - assertEquals(dp1, dp2) - assertTrue(dp2 is DatePeriod) + @Suppress("DEPRECATION") + run { + assertEquals(DateTimePeriod(years = 10, days = 3, hours = 2), p1 + p2 + p3) + assertEquals(DatePeriod(years = 11, months = 6), dp1 + p1) + assertEquals(DatePeriod(years = 2, months = 12), dp1 + dp1) + assertEquals(DateTimePeriod(years = 1, months = 6, days = 3), p2 + dp1) + + val dp2 = dp1 + p3 + p4 + assertEquals(dp1, dp2) + assertTrue(dp2 is DatePeriod) + } } @Test