Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Alban-io committed Jan 30, 2022
1 parent 00e638b commit 0bab166
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Type/Php/DatePeriodConstructorReturnTypeExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public function getTypeFromStaticMethodCall(MethodReflection $methodReflection,

if (
$thirdArgType instanceof ObjectType
&& $thirdArgType->isInstanceOf(DateTimeInterface::class)->yes()
&& (new ObjectType(DateTimeInterface::class))->isSuperTypeOf($thirdArgType)->yes()
) {

return new GenericObjectType(DatePeriod::class, [
Expand Down
4 changes: 4 additions & 0 deletions tests/PHPStan/Analyser/data/date-period-return-types.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,25 @@
$datePeriodList = [];

$datePeriod = new DatePeriod($start, $interval, $end);
assertType(\DatePeriod::class, $datePeriod);
assertType(\DateTimeInterface::class, $datePeriod->getEndDate());
assertType('null', $datePeriod->getRecurrences());
$datePeriodList[] = $datePeriod;

$datePeriod = new DatePeriod($start, $interval, $recurrences);
assertType(\DatePeriod::class, $datePeriod);
assertType('null', $datePeriod->getEndDate());
assertType('int', $datePeriod->getRecurrences());
$datePeriodList[] = $datePeriod;

$datePeriod = new DatePeriod($iso);
assertType(\DatePeriod::class, $datePeriod);
assertType('null', $datePeriod->getEndDate());
assertType('int', $datePeriod->getRecurrences());
$datePeriodList[] = $datePeriod;

/** @var DatePeriod $datePeriod */
$datePeriod = $datePeriodList[random_int(0, 2)];
assertType(\DatePeriod::class, $datePeriod);
assertType(\DateTimeInterface::class . '|null', $datePeriod->getEndDate());
assertType('int|null', $datePeriod->getRecurrences());

0 comments on commit 0bab166

Please sign in to comment.