Add #[NoDiscard] to CarbonImmutable modify(), next(), previous() and __call()

On PHP 8.5, DateTimeImmutable::modify() warns when its result is
discarded, but CarbonImmutable overrides it and lost the attribute.
Override modify(), next(), previous() and __call() in CarbonImmutable
with #[NoDiscard] so a discarded result warns again. The attribute is
ignored on older PHP versions, and mutable Carbon is unchanged.

Existing immutable tests that discarded results now keep them; in
IsTest::testIsSameMonth this was a real slip, the loop never moved $dt.

Fixes #3377
This commit is contained in:
dualfroz committed 2026-10-03 02:24:35 +02:00
1 parent 8dc8cfa977
commit b3fc145df6
9 files changed
+143 -11

No files matched your search

+2 -2
View File
@@ -90,7 +90,7 @@ class GettersTest extends AbstractTestCase
{
$period = CarbonPeriodFactory::withStartIntervalEnd(static::$periodClass);
$period->getStartDate()->subDays(3);
$date = $period->getStartDate()->subDays(3);
$this->assertSame('2012-07-01', $period->getStartDate()->format('Y-m-d'));
}
@@ -99,7 +99,7 @@ class GettersTest extends AbstractTestCase
{
$period = CarbonPeriodFactory::withStartIntervalEnd(static::$periodClass);
$period->getEndDate()->addDays(3);
$date = $period->getEndDate()->addDays(3);
$this->assertSame('2012-07-15', $period->getEndDate()->format('Y-m-d'));
}