sirbrillig / phpcs-variable-analysis

Find undefined and unused variables with the PHP Codesniffer static analysis tool.
Other
135 stars 14 forks source link

Make sure that recursive search of list assignments stays inside them #318

Closed sirbrillig closed 5 months ago

sirbrillig commented 5 months ago

When determining if a variable inside a square bracket is a shorthand list assignment, we cannot rely on the tokenizer's nested_parenthesis to tell us if we are inside a nested assignment (like [ $foo, [ $bar ] ] = [ 'foo', [ 'bar' ] ]); we must instead search for the nested bracket manually. To do this, the sniff searched for the nearest opening bracket within the same statement. However, it did not then check to make sure that bracket's closing token was outside of the position of the token we are searching for. This meant that a statement like [$foo] = something([$bar]) would treat $bar as being inside the brackets that surround $foo and therefore that both are inside a list assignment.

In this PR we alter the code that searches for the opening bracket to also check the position of the closing bracket.

Fixes https://github.com/sirbrillig/phpcs-variable-analysis/issues/317