@@ -93,7 +93,7 @@ public function check(
9393 $ functionParametersMaxCount = -1 ;
9494 }
9595
96- /** @var array<int, array{Expr, Type|null, bool, string|null, int, bool }> $arguments */
96+ /** @var array<int, array{Expr, Type|null, bool, string|null, int}> $arguments */
9797 $ arguments = [];
9898 /** @var array<int, Node\Arg> $args */
9999 $ args = $ funcCall ->getArgs ();
@@ -107,8 +107,6 @@ public function check(
107107 $ argumentName = $ arg ->name ->toString ();
108108 }
109109
110- $ nonUnpackAfterUnpacked = false ;
111-
112110 if ($ hasNamedArguments && $ arg ->unpack ) {
113111 $ errors [] = RuleErrorBuilder::message ('Named argument cannot be followed by an unpacked (...) argument. ' )
114112 ->identifier ('argument.unpackAfterNamed ' )
@@ -117,8 +115,6 @@ public function check(
117115 ->build ();
118116 }
119117 if ($ hasUnpackedArgument && !$ arg ->unpack ) {
120- $ nonUnpackAfterUnpacked = true ;
121-
122118 if ($ argumentName === null || !$ scope ->getPhpVersion ()->supportsNamedArgumentAfterUnpackedArgument ()->yes ()) {
123119 $ errors [] = RuleErrorBuilder::message ('Unpacked argument (...) cannot be followed by a non-unpacked argument. ' )
124120 ->identifier ('argument.nonUnpackAfterUnpacked ' )
@@ -183,7 +179,6 @@ public function check(
183179 false ,
184180 $ keyArgumentName ,
185181 $ arg ->getStartLine (),
186- $ nonUnpackAfterUnpacked ,
187182 ];
188183 }
189184 } else {
@@ -193,7 +188,6 @@ public function check(
193188 true ,
194189 null ,
195190 $ arg ->getStartLine (),
196- $ nonUnpackAfterUnpacked ,
197191 ];
198192 }
199193 continue ;
@@ -205,7 +199,6 @@ public function check(
205199 false ,
206200 $ argumentName ,
207201 $ arg ->getStartLine (),
208- $ nonUnpackAfterUnpacked ,
209202 ];
210203 }
211204
@@ -557,7 +550,7 @@ private function processArguments(
557550 $ newArguments = [];
558551
559552 $ namedArgumentAlreadyOccurred = false ;
560- foreach ($ arguments as $ i => [$ argumentValue , $ argumentValueType , $ unpack , $ argumentName , $ argumentLine, $ nonUnpackAfterUnpacked ]) {
553+ foreach ($ arguments as $ i => [$ argumentValue , $ argumentValueType , $ unpack , $ argumentName , $ argumentLine ]) {
561554 if ($ argumentName === null ) {
562555 if (!isset ($ parameters [$ i ])) {
563556 if (!$ parametersAcceptor ->isVariadic () || count ($ parameters ) === 0 ) {
@@ -617,18 +610,11 @@ private function processArguments(
617610 && !$ parameter ->isVariadic ()
618611 && !array_key_exists ($ parameter ->getName (), $ unusedParametersByName )
619612 ) {
620- if ($ nonUnpackAfterUnpacked ) {
621- $ errors [] = RuleErrorBuilder::message (sprintf ('Named parameter cannot overwrite already unpacked argument $%s. ' , $ parameter ->getName ()))
622- ->identifier ('argument.namedOverwriteAfterUnpacked ' )
623- ->line ($ argumentLine )
624- ->nonIgnorable ()
625- ->build ();
626- } else {
627- $ errors [] = RuleErrorBuilder::message (sprintf ('Argument for parameter $%s has already been passed. ' , $ parameter ->getName ()))
628- ->identifier ('argument.duplicate ' )
629- ->line ($ argumentLine )
630- ->build ();
631- }
613+ $ errors [] = RuleErrorBuilder::message (sprintf ('Named parameter cannot overwrite already unpacked argument $%s. ' , $ parameter ->getName ()))
614+ ->identifier ('argument.namedOverwriteAfterUnpacked ' )
615+ ->line ($ argumentLine )
616+ ->nonIgnorable ()
617+ ->build ();
632618
633619 continue ;
634620 }
0 commit comments