From 7a6a63c2780f9d8d1c932fffe64aae3dec35cc90 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 20 Oct 2025 13:59:05 +0700 Subject: [PATCH 1/2] [TypeDeclaration] Skip conditional non-string on AddParamStringTypeFromSprintfUseRector --- .../skip_conditional_non_string.php.inc | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 rules-tests/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector/Fixture/skip_conditional_non_string.php.inc diff --git a/rules-tests/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector/Fixture/skip_conditional_non_string.php.inc b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector/Fixture/skip_conditional_non_string.php.inc new file mode 100644 index 00000000000..1b071549e43 --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector/Fixture/skip_conditional_non_string.php.inc @@ -0,0 +1,20 @@ + Date: Mon, 20 Oct 2025 14:04:09 +0700 Subject: [PATCH 2/2] fix --- .../ClassMethod/AddParamStringTypeFromSprintfUseRector.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rules/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector.php b/rules/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector.php index d51dec28693..38f59b982f0 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/AddParamStringTypeFromSprintfUseRector.php @@ -13,6 +13,7 @@ use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Function_; use Rector\Rector\AbstractRector; +use Rector\TypeDeclaration\Guard\ParamTypeAddGuard; use Rector\TypeDeclaration\NodeAnalyzer\VariableInSprintfMaskMatcher; use Rector\VendorLocker\ParentClassMethodTypeOverrideGuard; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -26,6 +27,7 @@ final class AddParamStringTypeFromSprintfUseRector extends AbstractRector public function __construct( private readonly VariableInSprintfMaskMatcher $variableInSprintfMaskMatcher, private readonly ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard, + private readonly ParamTypeAddGuard $paramTypeAddGuard ) { } @@ -94,8 +96,11 @@ public function refactor(Node $node): ClassMethod|Function_|Closure|ArrowFunctio continue; } - $variableName = $this->getName($param); + if (! $this->paramTypeAddGuard->isLegal($param, $node)) { + continue; + } + $variableName = $this->getName($param); if (! $this->variableInSprintfMaskMatcher->matchMask($node, $variableName, '%s')) { continue; }