squizlabs / PHP_CodeSniffer

PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.
BSD 3-Clause "New" or "Revised" License
10.66k stars 1.48k forks source link

PHP 8.2 | Tokenizer, File, sniffs: account for new `true` type #3662

Closed jrfnl closed 9 months ago

jrfnl commented 2 years ago

PHP 8.2 | Tokenizer/PHP: allow for true in union types

Previously, false and null were already allowed in union types. As of PHP 8.2, true has been added to the supported types in PHP and can also be used in union types. Also see: https://3v4l.org/ZpfID

This commit adjusts the Tokenizer to correctly retokenize the T_BITWISE_OR character to T_UNION_TYPE when true is included in a union type.

Includes unit tests.

Refs:

PHP 8.2 | File::getMethodProperties(): allow for true in types

As of PHP 8.2, true, false and null will be allowed as stand-alone types. true can now also be used in union types (was already allowed for false and null). The true and the false types are allowed to be nullable, the null type is not (but that's not the concern of this method). Also see: https://3v4l.org/ZpfID

This commit adjusts the File::getMethodProperties() method to take true into account. false and null were already handled due to these previously already being allowed in union types.

Includes unit tests.

Refs:

PHP 8.2 | File::getMethodParameters(): allow for true in types

As of PHP 8.2, true, false and null will be allowed as stand-alone types. true can now also be used in union types (was already allowed for false and null). The true and the false types are allowed to be nullable, the null type is not (but that's not the concern of this method). Also see: https://3v4l.org/ZpfID

This commit adjusts the File::getMethodParameters() method to take true into account. false and null were already handled due to these previously already being allowed in union types.

Includes unit tests.

Refs:

PHP 8.2 | File::getMemberProperties(): allow for true in types

As of PHP 8.2, true, false and null will be allowed as stand-alone types. true can now also be used in union types (was already allowed for false and null). The true and the false types are allowed to be nullable, the null type is not (but that's not the concern of this method). Also see: https://3v4l.org/ZpfID

This commit adjusts the File::getMemberProperties() method to take true into account. false and null were already handled due to these previously already being allowed in union types.

Includes unit tests.

Includes minor touch up of some pre-existing tests.

Refs:

PHP 8.2 | Generic/LowerCaseType: allow for stand-alone true/false/null

As of PHP 8.2, true, false and null will be allowed as stand-alone types. The true and the false types are allowed to be nullable, the null type is not (but that's not the concern of the sniff). Also see: https://3v4l.org/ZpfID

This commit adjusts the sniff to take true into account. false and null were already handled due to these previously already being allowed in union types.

Includes unit tests.

Refs:

PHP 8.2 | PSR12/NullableTypeDeclaration: allow for nullable true/false]

As of PHP 8.2, true, false and null will be allowed as stand-alone types. The true and the false types are allowed to be nullable, the null type is not (but that's not the concern of the sniff). Also see: https://3v4l.org/ZpfID

This adjusts the sniff to take these new types into account.

Includes unit tests.

Refs:

jrfnl commented 1 year ago

@gsherwood Could this please be earmarked for 3.8.0 ?

jrfnl commented 9 months ago

Closing as replaced by https://github.com/PHPCSStandards/PHP_CodeSniffer/pull/49

jrfnl commented 9 months ago

FYI: this fix is included in today's PHP_CodeSniffer 3.8.0 release.

As per #3932, development on PHP_CodeSniffer will continue in the PHPCSStandards/PHP_CodeSniffer repository. If you want to stay informed, you may want to start "watching" that repo (or watching releases from that repo).