@@ -115,7 +115,7 @@ final class TypeResolver
115
115
* @var array<string, string> List of recognized keywords and unto which Value Object they map
116
116
* @psalm-var array<string, class-string<Type>>
117
117
*/
118
- private array $ keywords = [
118
+ private $ keywords = [
119
119
'string ' => String_::class,
120
120
'class-string ' => ClassString::class,
121
121
'interface-string ' => InterfaceString::class,
@@ -159,12 +159,15 @@ final class TypeResolver
159
159
'non-empty-list ' => NonEmptyList::class,
160
160
];
161
161
162
- /** @psalm-readonly */
163
- private FqsenResolver $ fqsenResolver ;
164
- /** @psalm-readonly */
165
- private TypeParser $ typeParser ;
166
- /** @psalm-readonly */
167
- private Lexer $ lexer ;
162
+ /** @psalm-readonly
163
+ * @var FqsenResolver */
164
+ private $ fqsenResolver ;
165
+ /** @psalm-readonly
166
+ * @var TypeParser */
167
+ private $ typeParser ;
168
+ /** @psalm-readonly
169
+ * @var Lexer */
170
+ private $ lexer ;
168
171
169
172
/**
170
173
* Initializes this TypeResolver with the means to create and resolve Fqsen objects.
@@ -227,11 +230,13 @@ public function createType(?TypeNode $type, Context $context): Type
227
230
case ArrayShapeNode::class:
228
231
return new ArrayShape (
229
232
...array_map (
230
- fn (ArrayShapeItemNode $ item ) => new ArrayShapeItem (
231
- (string ) $ item ->keyName ,
232
- $ this ->createType ($ item ->valueType , $ context ),
233
- $ item ->optional
234
- ),
233
+ function (ArrayShapeItemNode $ item ) use ($ context ) : ArrayShapeItem {
234
+ return new ArrayShapeItem (
235
+ (string ) $ item ->keyName ,
236
+ $ this ->createType ($ item ->valueType , $ context ),
237
+ $ item ->optional
238
+ );
239
+ },
235
240
$ type ->items
236
241
)
237
242
);
@@ -252,7 +257,7 @@ public function createType(?TypeNode $type, Context $context): Type
252
257
return new Intersection (
253
258
array_filter (
254
259
array_map (
255
- function (TypeNode $ nestedType ) use ($ context ) {
260
+ function (TypeNode $ nestedType ) use ($ context ): Type {
256
261
$ type = $ this ->createType ($ nestedType , $ context );
257
262
if ($ type instanceof AggregatedType) {
258
263
return new Expression ($ type );
@@ -274,7 +279,7 @@ function (TypeNode $nestedType) use ($context) {
274
279
return new Compound (
275
280
array_filter (
276
281
array_map (
277
- function (TypeNode $ nestedType ) use ($ context ) {
282
+ function (TypeNode $ nestedType ) use ($ context ): Type {
278
283
$ type = $ this ->createType ($ nestedType , $ context );
279
284
if ($ type instanceof AggregatedType) {
280
285
return new Expression ($ type );
@@ -343,16 +348,15 @@ private function createFromGeneric(GenericTypeNode $type, Context $context): Typ
343
348
throw new RuntimeException ('int<min,max> has not the correct format ' );
344
349
}
345
350
346
- return new IntegerRange (
347
- (string ) $ type ->genericTypes [0 ],
348
- (string ) $ type ->genericTypes [1 ],
349
- );
351
+ return new IntegerRange ((string ) $ type ->genericTypes [0 ], (string ) $ type ->genericTypes [1 ]);
350
352
351
353
case 'iterable ' :
352
354
return new Iterable_ (
353
355
...array_reverse (
354
356
array_map (
355
- fn (TypeNode $ genericType ) => $ this ->createType ($ genericType , $ context ),
357
+ function (TypeNode $ genericType ) use ($ context ) : Type {
358
+ return $ this ->createType ($ genericType , $ context );
359
+ },
356
360
$ type ->genericTypes
357
361
)
358
362
)
@@ -368,7 +372,9 @@ private function createFromGeneric(GenericTypeNode $type, Context $context): Typ
368
372
$ collectionType ->getFqsen (),
369
373
...array_reverse (
370
374
array_map (
371
- fn (TypeNode $ genericType ) => $ this ->createType ($ genericType , $ context ),
375
+ function (TypeNode $ genericType ) use ($ context ) : Type {
376
+ return $ this ->createType ($ genericType , $ context );
377
+ },
372
378
$ type ->genericTypes
373
379
)
374
380
)
@@ -378,21 +384,18 @@ private function createFromGeneric(GenericTypeNode $type, Context $context): Typ
378
384
379
385
private function createFromCallable (CallableTypeNode $ type , Context $ context ): Callable_
380
386
{
381
- return new Callable_ (
382
- array_map (
383
- function (CallableTypeParameterNode $ param ) use ($ context ) {
384
- return new CallableParameter (
385
- $ this ->createType ($ param ->type , $ context ),
386
- $ param ->parameterName !== '' ? trim ($ param ->parameterName , '$ ' ) : null ,
387
- $ param ->isReference ,
388
- $ param ->isVariadic ,
389
- $ param ->isOptional
390
- );
391
- },
392
- $ type ->parameters
393
- ),
394
- $ this ->createType ($ type ->returnType , $ context ),
395
- );
387
+ return new Callable_ (array_map (
388
+ function (CallableTypeParameterNode $ param ) use ($ context ): CallableParameter {
389
+ return new CallableParameter (
390
+ $ this ->createType ($ param ->type , $ context ),
391
+ $ param ->parameterName !== '' ? trim ($ param ->parameterName , '$ ' ) : null ,
392
+ $ param ->isReference ,
393
+ $ param ->isVariadic ,
394
+ $ param ->isOptional
395
+ );
396
+ },
397
+ $ type ->parameters
398
+ ), $ this ->createType ($ type ->returnType , $ context ));
396
399
}
397
400
398
401
private function createFromConst (ConstTypeNode $ type , Context $ context ): Type
@@ -542,7 +545,9 @@ private function createArray(array $typeNodes, Context $context): Array_
542
545
{
543
546
$ types = array_reverse (
544
547
array_map (
545
- fn (TypeNode $ node ) => $ this ->createType ($ node , $ context ),
548
+ function (TypeNode $ node ) use ($ context ) : Type {
549
+ return $ this ->createType ($ node , $ context );
550
+ },
546
551
$ typeNodes
547
552
)
548
553
);
@@ -592,12 +597,8 @@ private function tryParseRemainingCompoundTypes(TokenIterator $tokenIterator, Co
592
597
$ tokenIterator ->isCurrentTokenType (Lexer::TOKEN_UNION ) ||
593
598
$ tokenIterator ->isCurrentTokenType (Lexer::TOKEN_INTERSECTION )
594
599
) {
595
- Deprecation::trigger (
596
- 'phpdocumentor/type-resolver ' ,
597
- 'https://github.com/phpDocumentor/TypeResolver/issues/184 ' ,
598
- 'Legacy nullable type detected, please update your code as
599
- you are using nullable types in a docblock. support will be removed in v2.0.0 ' ,
600
- );
600
+ Deprecation::trigger ('phpdocumentor/type-resolver ' , 'https://github.com/phpDocumentor/TypeResolver/issues/184 ' , 'Legacy nullable type detected, please update your code as
601
+ you are using nullable types in a docblock. support will be removed in v2.0.0 ' );
601
602
}
602
603
603
604
$ continue = true ;
0 commit comments