Skip to content

Commit 93b5140

Browse files
authored
Correct docblocks for isAOf and related (#346)
1 parent 90ab582 commit 93b5140

5 files changed

Lines changed: 76 additions & 118 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Changelog
66
### Fixed
77

88
- Corrected `isList` type documentation
9+
- Corrected `isAOf` type documentation
910

1011
## 2.1.2
1112

src/Assert.php

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -472,18 +472,19 @@ public static function isIterable(mixed $value, string $message = ''): iterable
472472
/**
473473
* @psalm-pure
474474
*
475-
* @template ExpectedType of object
475+
* @template T of object
476476
*
477-
* @psalm-assert ExpectedType $value
477+
* @psalm-assert T $value
478478
*
479-
* @param class-string<ExpectedType> $class
479+
* @psalm-param class-string<T> $class
480480
*
481-
* @return ExpectedType
481+
* @return T
482482
*
483483
* @throws InvalidArgumentException
484484
*/
485485
public static function isInstanceOf(mixed $value, mixed $class, string $message = ''): object
486486
{
487+
static::object($value);
487488
static::string($class, 'Expected class as a string. Got: %s');
488489

489490
if (!($value instanceof $class)) {
@@ -498,15 +499,12 @@ public static function isInstanceOf(mixed $value, mixed $class, string $message
498499
}
499500

500501
/**
501-
* @psalm-pure
502-
*
503-
* @template ExpectedType of object
502+
* @template T of object
504503
*
505-
* @psalm-assert !ExpectedType $value
506-
*
507-
* @param class-string<ExpectedType> $class
504+
* @psalm-assert object $value
505+
* @psalm-param class-string<T> $class
508506
*
509-
* @return !ExpectedType
507+
* @return !T
510508
*
511509
* @throws InvalidArgumentException
512510
*/
@@ -527,10 +525,13 @@ public static function notInstanceOf(mixed $value, mixed $class, string $message
527525
}
528526

529527
/**
530-
* @psalm-pure
528+
* @template T of object
531529
*
532-
* @param array<object|string> $classes
533-
* @psalm-param array<class-string> $classes
530+
* @psalm-assert T $value
531+
*
532+
* @param T $value
533+
*
534+
* @return T
534535
*
535536
* @throws InvalidArgumentException
536537
*/
@@ -540,6 +541,8 @@ public static function isInstanceOfAny(mixed $value, mixed $classes, string $mes
540541
static::isIterable($classes);
541542

542543
foreach ($classes as $class) {
544+
static::string($class, 'Expected class as a string. Got: %s');
545+
543546
if ($value instanceof $class) {
544547
return $value;
545548
}
@@ -555,14 +558,11 @@ public static function isInstanceOfAny(mixed $value, mixed $classes, string $mes
555558
/**
556559
* @psalm-pure
557560
*
558-
* @template ExpectedType of object
561+
* @template T of object
559562
*
560-
* @psalm-assert ExpectedType|class-string<ExpectedType> $value
563+
* @psalm-assert T|class-string<T> $value
561564
*
562-
* @param ExpectedType|class-string<ExpectedType> $value
563-
* @param class-string<ExpectedType> $class
564-
*
565-
* @return ExpectedType|class-string<ExpectedType>
565+
* @return T
566566
*
567567
* @throws InvalidArgumentException
568568
*/
@@ -584,12 +584,13 @@ public static function isAOf(mixed $value, mixed $class, string $message = ''):
584584
/**
585585
* @psalm-pure
586586
*
587-
* @template UnexpectedType of object
587+
* @template T
588588
*
589-
* @param object|string $value
590-
* @param class-string<UnexpectedType> $class
589+
* @psalm-assert object|class-string $value
591590
*
592-
* @psalm-return !UnexpectedType
591+
* @param T $value
592+
*
593+
* @return T
593594
*
594595
* @throws InvalidArgumentException
595596
*/
@@ -620,10 +621,10 @@ public static function isNotA(mixed $value, mixed $class, string $message = ''):
620621
*/
621622
public static function isAnyOf(mixed $value, mixed $classes, string $message = ''): object|string
622623
{
624+
static::objectish($value);
623625
static::isIterable($classes);
624626

625627
foreach ($classes as $class) {
626-
static::objectish($value);
627628
static::string($class, 'Expected class as a string. Got: %s');
628629

629630
if (\is_a($value, $class, \is_string($value))) {

src/Mixin.php

Lines changed: 49 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,12 +1143,11 @@ public static function allNullOrIsIterable(mixed $value, string $message = ''):
11431143
/**
11441144
* @psalm-pure
11451145
*
1146-
* @template ExpectedType of object
1147-
* @psalm-assert ExpectedType|null $value
1148-
*
1149-
* @param class-string<ExpectedType> $class
1146+
* @template T of object
1147+
* @psalm-assert T|null $value
11501148
*
1151-
* @return ExpectedType|null
1149+
* @psalm-param class-string<T> $class
1150+
* @return T|null
11521151
*
11531152
* @throws InvalidArgumentException
11541153
*/
@@ -1162,12 +1161,11 @@ public static function nullOrIsInstanceOf(mixed $value, mixed $class, string $me
11621161
/**
11631162
* @psalm-pure
11641163
*
1165-
* @template ExpectedType of object
1166-
* @psalm-assert iterable<ExpectedType> $value
1164+
* @template T of object
1165+
* @psalm-assert iterable<T> $value
11671166
*
1168-
* @param class-string<ExpectedType> $class
1169-
*
1170-
* @return iterable<ExpectedType>
1167+
* @psalm-param class-string<T> $class
1168+
* @return iterable<T>
11711169
*
11721170
* @throws InvalidArgumentException
11731171
*/
@@ -1185,12 +1183,11 @@ public static function allIsInstanceOf(mixed $value, mixed $class, string $messa
11851183
/**
11861184
* @psalm-pure
11871185
*
1188-
* @template ExpectedType of object
1189-
* @psalm-assert iterable<ExpectedType|null> $value
1186+
* @template T of object
1187+
* @psalm-assert iterable<T|null> $value
11901188
*
1191-
* @param class-string<ExpectedType> $class
1192-
*
1193-
* @return iterable<ExpectedType|null>
1189+
* @psalm-param class-string<T> $class
1190+
* @return iterable<T|null>
11941191
*
11951192
* @throws InvalidArgumentException
11961193
*/
@@ -1206,12 +1203,8 @@ public static function allNullOrIsInstanceOf(mixed $value, mixed $class, string
12061203
}
12071204

12081205
/**
1209-
* @psalm-pure
1210-
*
1211-
* @template ExpectedType of object
1212-
*
1213-
* @param class-string<ExpectedType> $class
1214-
*
1206+
* @template T of object
1207+
* @psalm-param class-string<T> $class
12151208
* @return mixed
12161209
*
12171210
* @throws InvalidArgumentException
@@ -1224,12 +1217,8 @@ public static function nullOrNotInstanceOf(mixed $value, mixed $class, string $m
12241217
}
12251218

12261219
/**
1227-
* @psalm-pure
1228-
*
1229-
* @template ExpectedType of object
1230-
*
1231-
* @param class-string<ExpectedType> $class
1232-
*
1220+
* @template T of object
1221+
* @psalm-param class-string<T> $class
12331222
* @return mixed
12341223
*
12351224
* @throws InvalidArgumentException
@@ -1246,14 +1235,11 @@ public static function allNotInstanceOf(mixed $value, mixed $class, string $mess
12461235
}
12471236

12481237
/**
1249-
* @psalm-pure
1250-
*
1251-
* @template ExpectedType of object
1252-
* @psalm-assert iterable<!ExpectedType|null> $value
1253-
*
1254-
* @param class-string<ExpectedType> $class
1238+
* @template T of object
1239+
* @psalm-assert iterable<object|null> $value
12551240
*
1256-
* @return iterable<!ExpectedType|null>
1241+
* @psalm-param class-string<T> $class
1242+
* @return iterable<object|null>
12571243
*
12581244
* @throws InvalidArgumentException
12591245
*/
@@ -1269,13 +1255,12 @@ public static function allNullOrNotInstanceOf(mixed $value, mixed $class, string
12691255
}
12701256

12711257
/**
1272-
* @psalm-pure
1258+
* @template T of object
1259+
* @psalm-assert T|null $value
12731260
*
1274-
* @param array<object|string> $classes
1261+
* @param T|null $value
12751262
*
1276-
* @psalm-param array<class-string> $classes
1277-
*
1278-
* @return mixed
1263+
* @return T|null
12791264
*
12801265
* @throws InvalidArgumentException
12811266
*/
@@ -1287,13 +1272,12 @@ public static function nullOrIsInstanceOfAny(mixed $value, mixed $classes, strin
12871272
}
12881273

12891274
/**
1290-
* @psalm-pure
1275+
* @template T of object
1276+
* @psalm-assert iterable<T> $value
12911277
*
1292-
* @param array<object|string> $classes
1278+
* @param iterable<T> $value
12931279
*
1294-
* @psalm-param array<class-string> $classes
1295-
*
1296-
* @return mixed
1280+
* @return iterable<T>
12971281
*
12981282
* @throws InvalidArgumentException
12991283
*/
@@ -1309,13 +1293,12 @@ public static function allIsInstanceOfAny(mixed $value, mixed $classes, string $
13091293
}
13101294

13111295
/**
1312-
* @psalm-pure
1296+
* @template T of object
1297+
* @psalm-assert iterable<T|null> $value
13131298
*
1314-
* @param array<object|string> $classes
1299+
* @param iterable<T|null> $value
13151300
*
1316-
* @psalm-param array<class-string> $classes
1317-
*
1318-
* @return mixed
1301+
* @return iterable<T|null>
13191302
*
13201303
* @throws InvalidArgumentException
13211304
*/
@@ -1333,13 +1316,10 @@ public static function allNullOrIsInstanceOfAny(mixed $value, mixed $classes, st
13331316
/**
13341317
* @psalm-pure
13351318
*
1336-
* @template ExpectedType of object
1337-
* @psalm-assert ExpectedType|class-string<ExpectedType>|null $value
1338-
*
1339-
* @param ExpectedType|class-string<ExpectedType>|null $value
1340-
* @param class-string<ExpectedType> $class
1319+
* @template T of object
1320+
* @psalm-assert T|class-string<T>|null $value
13411321
*
1342-
* @return ExpectedType|class-string<ExpectedType>|null
1322+
* @return T|class-string<T>|null
13431323
*
13441324
* @throws InvalidArgumentException
13451325
*/
@@ -1353,13 +1333,10 @@ public static function nullOrIsAOf(mixed $value, mixed $class, string $message =
13531333
/**
13541334
* @psalm-pure
13551335
*
1356-
* @template ExpectedType of object
1357-
* @psalm-assert iterable<ExpectedType|class-string<ExpectedType>> $value
1358-
*
1359-
* @param iterable<ExpectedType|class-string<ExpectedType>> $value
1360-
* @param class-string<ExpectedType> $class
1336+
* @template T of object
1337+
* @psalm-assert iterable<T|class-string<T>> $value
13611338
*
1362-
* @return iterable<ExpectedType|class-string<ExpectedType>>
1339+
* @return iterable<T|class-string<T>>
13631340
*
13641341
* @throws InvalidArgumentException
13651342
*/
@@ -1377,13 +1354,10 @@ public static function allIsAOf(mixed $value, mixed $class, string $message = ''
13771354
/**
13781355
* @psalm-pure
13791356
*
1380-
* @template ExpectedType of object
1381-
* @psalm-assert iterable<ExpectedType|class-string<ExpectedType>|null> $value
1382-
*
1383-
* @param iterable<ExpectedType|class-string<ExpectedType>|null> $value
1384-
* @param class-string<ExpectedType> $class
1357+
* @template T of object
1358+
* @psalm-assert iterable<T|class-string<T>|null> $value
13851359
*
1386-
* @return iterable<ExpectedType|class-string<ExpectedType>|null>
1360+
* @return iterable<T|class-string<T>|null>
13871361
*
13881362
* @throws InvalidArgumentException
13891363
*/
@@ -1401,10 +1375,9 @@ public static function allNullOrIsAOf(mixed $value, mixed $class, string $messag
14011375
/**
14021376
* @psalm-pure
14031377
*
1404-
* @template UnexpectedType of object
1378+
* @template T
14051379
*
1406-
* @param object|string|null $value
1407-
* @param class-string<UnexpectedType> $class
1380+
* @param T|null $value
14081381
*
14091382
* @return mixed
14101383
*
@@ -1420,10 +1393,9 @@ public static function nullOrIsNotA(mixed $value, mixed $class, string $message
14201393
/**
14211394
* @psalm-pure
14221395
*
1423-
* @template UnexpectedType of object
1396+
* @template T
14241397
*
1425-
* @param iterable<object|string> $value
1426-
* @param class-string<UnexpectedType> $class
1398+
* @param iterable<T> $value
14271399
*
14281400
* @return mixed
14291401
*
@@ -1443,12 +1415,12 @@ public static function allIsNotA(mixed $value, mixed $class, string $message = '
14431415
/**
14441416
* @psalm-pure
14451417
*
1446-
* @template UnexpectedType of object
1418+
* @template T
1419+
* @psalm-assert iterable<object|class-string|null> $value
14471420
*
1448-
* @param iterable<object|string|null> $value
1449-
* @param class-string<UnexpectedType> $class
1421+
* @param iterable<T|null> $value
14501422
*
1451-
* @return mixed
1423+
* @return iterable<object|class-string|null>
14521424
*
14531425
* @throws InvalidArgumentException
14541426
*/

0 commit comments

Comments
 (0)