Skip to content

Commit c9b8ddb

Browse files
herndlmondrejmirtes
authored andcommitted
Support deprecated isTraversable
1 parent 3937f41 commit c9b8ddb

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ This extension specifies types of values passed to:
4242
* `Assert::resource`
4343
* `Assert::isCallable`
4444
* `Assert::isArray`
45+
* `Assert::isTraversable` (deprecated, use `isIterable` or `isInstanceOf` instead)
4546
* `Assert::isIterable`
4647
* `Assert::isCountable`
4748
* `Assert::isInstanceOf`

src/Type/WebMozartAssert/AssertTypeSpecifyingExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,9 @@ private static function getExpressionResolvers(): array
304304
[$value]
305305
);
306306
},
307+
'isTraversable' => static function (Scope $scope, Arg $value): Expr {
308+
return self::$resolvers['isIterable']($scope, $value);
309+
},
307310
'isIterable' => static function (Scope $scope, Arg $expr): Expr {
308311
return new BooleanOr(
309312
new FuncCall(

tests/Type/WebMozartAssert/data/type.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,15 @@ public function isArray($a, $b): void
142142
\PHPStan\Testing\assertType('array|null', $b);
143143
}
144144

145+
public function isTraversable($a, $b): void
146+
{
147+
Assert::isTraversable($a);
148+
\PHPStan\Testing\assertType('array|Traversable', $a);
149+
150+
Assert::nullOrIsTraversable($b);
151+
\PHPStan\Testing\assertType('array|Traversable|null', $b);
152+
}
153+
145154
public function isIterable($a, $b): void
146155
{
147156
Assert::isIterable($a);

0 commit comments

Comments
 (0)