PHP_CodeSniffer icon indicating copy to clipboard operation
PHP_CodeSniffer copied to clipboard

Short list vs short array

Open jrfnl opened this issue 8 months ago • 0 comments

Repost from https://github.com/squizlabs/PHP_CodeSniffer/issues/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: https://github.com/wimg/PHPCompatibility/pull/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.

jrfnl avatar Nov 08 '23 08:11 jrfnl