@@ -281,14 +281,26 @@ public function changeParameterNamesByMapping(array $parameterNameMapping): self
281
281
return $ this ;
282
282
}
283
283
284
+ $ mapParameterCb = static function (Type $ type , callable $ traverse ) use ($ parameterNameMapping ): Type {
285
+ if ($ type instanceof ConditionalTypeForParameter) {
286
+ $ parameterName = substr ($ type ->getParameterName (), 1 );
287
+ if (array_key_exists ($ parameterName , $ parameterNameMapping )) {
288
+ $ type = $ type ->changeParameterName ('$ ' . $ parameterNameMapping [$ parameterName ]);
289
+ }
290
+ }
291
+
292
+ return $ traverse ($ type );
293
+ };
294
+
284
295
$ paramTags = $ this ->getParamTags ();
285
296
286
297
$ newParamTags = [];
287
298
foreach ($ paramTags as $ key => $ paramTag ) {
288
299
if (!array_key_exists ($ key , $ parameterNameMapping )) {
289
300
continue ;
290
301
}
291
- $ newParamTags [$ parameterNameMapping [$ key ]] = $ paramTag ;
302
+ $ transformedType = TypeTraverser::map ($ paramTag ->getType (), $ mapParameterCb );
303
+ $ newParamTags [$ parameterNameMapping [$ key ]] = $ paramTag ->withType ($ transformedType );
292
304
}
293
305
294
306
$ paramOutTags = $ this ->getParamOutTags ();
@@ -298,21 +310,14 @@ public function changeParameterNamesByMapping(array $parameterNameMapping): self
298
310
if (!array_key_exists ($ key , $ parameterNameMapping )) {
299
311
continue ;
300
312
}
301
- $ newParamOutTags [$ parameterNameMapping [$ key ]] = $ paramOutTag ;
313
+
314
+ $ transformedType = TypeTraverser::map ($ paramOutTag ->getType (), $ mapParameterCb );
315
+ $ newParamOutTags [$ parameterNameMapping [$ key ]] = $ paramOutTag ->withType ($ transformedType );
302
316
}
303
317
304
318
$ returnTag = $ this ->getReturnTag ();
305
319
if ($ returnTag !== null ) {
306
- $ transformedType = TypeTraverser::map ($ returnTag ->getType (), static function (Type $ type , callable $ traverse ) use ($ parameterNameMapping ): Type {
307
- if ($ type instanceof ConditionalTypeForParameter) {
308
- $ parameterName = substr ($ type ->getParameterName (), 1 );
309
- if (array_key_exists ($ parameterName , $ parameterNameMapping )) {
310
- $ type = $ type ->changeParameterName ('$ ' . $ parameterNameMapping [$ parameterName ]);
311
- }
312
- }
313
-
314
- return $ traverse ($ type );
315
- });
320
+ $ transformedType = TypeTraverser::map ($ returnTag ->getType (), $ mapParameterCb );
316
321
$ returnTag = $ returnTag ->withType ($ transformedType );
317
322
}
318
323
0 commit comments