Skip to content
New issue

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

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

Already on GitHub? # to your account

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

Merged
merged 7 commits into from
Dec 4, 2023

Conversation

jrfnl
Copy link
Member

@jrfnl jrfnl commented Nov 9, 2023

Description

Recreation of upstream PR squizlabs/PHP_CodeSniffer#3662:

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:

Suggested changelog entry

Added support for PHP 8.2 true type.

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:
* https://wiki.php.net/rfc/true-type
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:
* https://wiki.php.net/rfc/null-false-standalone-types
* https://wiki.php.net/rfc/true-type
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:
* https://wiki.php.net/rfc/null-false-standalone-types
* https://wiki.php.net/rfc/true-type
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:
* https://wiki.php.net/rfc/null-false-standalone-types
* https://wiki.php.net/rfc/true-type
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:
* https://wiki.php.net/rfc/null-false-standalone-types
* https://wiki.php.net/rfc/true-type
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:
* https://wiki.php.net/rfc/null-false-standalone-types
* https://wiki.php.net/rfc/true-type
@jrfnl jrfnl force-pushed the php-8.2/account-for-true-type branch from 3ffbf5c to ef96fc6 Compare December 4, 2023 10:44
@jrfnl jrfnl merged commit 26df2fc into master Dec 4, 2023
57 checks passed
@jrfnl jrfnl deleted the php-8.2/account-for-true-type branch December 4, 2023 10:58
jrfnl added a commit that referenced this pull request Dec 4, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant