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.
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