Skip to content

Conversation

@sirbrillig
Copy link
Owner

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 #317

@sirbrillig sirbrillig merged commit c019db0 into 2.x Mar 24, 2024
@sirbrillig sirbrillig deleted the fix-destructure-bug branch March 24, 2024 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants