@@ -281,14 +281,26 @@ public function changeParameterNamesByMapping(array $parameterNameMapping): self
281281 return $ this ;
282282 }
283283
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+
284295 $ paramTags = $ this ->getParamTags ();
285296
286297 $ newParamTags = [];
287298 foreach ($ paramTags as $ key => $ paramTag ) {
288299 if (!array_key_exists ($ key , $ parameterNameMapping )) {
289300 continue ;
290301 }
291- $ newParamTags [$ parameterNameMapping [$ key ]] = $ paramTag ;
302+ $ transformedType = TypeTraverser::map ($ paramTag ->getType (), $ mapParameterCb );
303+ $ newParamTags [$ parameterNameMapping [$ key ]] = $ paramTag ->withType ($ transformedType );
292304 }
293305
294306 $ paramOutTags = $ this ->getParamOutTags ();
@@ -298,21 +310,14 @@ public function changeParameterNamesByMapping(array $parameterNameMapping): self
298310 if (!array_key_exists ($ key , $ parameterNameMapping )) {
299311 continue ;
300312 }
301- $ newParamOutTags [$ parameterNameMapping [$ key ]] = $ paramOutTag ;
313+
314+ $ transformedType = TypeTraverser::map ($ paramOutTag ->getType (), $ mapParameterCb );
315+ $ newParamOutTags [$ parameterNameMapping [$ key ]] = $ paramOutTag ->withType ($ transformedType );
302316 }
303317
304318 $ returnTag = $ this ->getReturnTag ();
305319 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 );
316321 $ returnTag = $ returnTag ->withType ($ transformedType );
317322 }
318323
0 commit comments