Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Short list vs short array #12

Open
jrfnl opened this issue Nov 8, 2023 · 0 comments
Open

Short list vs short array #12

jrfnl opened this issue Nov 8, 2023 · 0 comments

Comments

@jrfnl
Copy link
Member

jrfnl commented Nov 8, 2023

Repost from squizlabs/PHP_CodeSniffer#1984:

PHP 7.1 introduced the "short list syntax", i.e. using the short array syntax instead of calling list().
Ref: http://php.net/manual/en/migration71.new-features.php#migration71.new-features.symmetric-array-destructuring

Now I can imagine that in some situations it would be useful to be able to make the distinction whether something is used as a short list vs a short array.

There are two ways this can be done:

  1. Introduce T_OPEN_SHORT_LIST/T_CLOSE_SHORT_LIST tokens and let the Tokenizer handle it.
    The downside of this first solution is that in a lot of cases - especially when sniffing for code style -, I imagine that short list/array should be treated the same, so those sniff would then need to add two additional tokens to sniff for.
  2. Introduce a utility function which can make the distinction and can be called by select sniffs if/when needed.

For the PHPCompatibility standard, I have already created the utility function (solution 2), including extensive unit tests for it.
See: PHPCompatibility/PHPCompatibility#635

If there would be interest in having such a utility function in PHPCS itself, I'd be happy to pull it here.


See the original issue for an extensive discussion on the topic.

My current line of thinking is to add a nested_brackets index to the token array. This would allow for sniffs to figure out if they are dealing with a (nested) short list or a short array much more easily.

I'm tentatively earmarking this ticket for 4.0, but it may well be moved to a later release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant