Squiz/ClassDeclaration: allow for function attributes #825
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The
Squiz.Classes.ClassDeclaration
sniff checks the number of blank lines after a class closing brace to be exactly one blank line.To prevent conflicts with other sniffs checking blank lines before function declarations, it bows out when the next thing after the class declaration is a function declaration and defers to the function declaration sniff to handle the "blank lines before function" check. See squizlabs/PHP_CodeSniffer#2033 for historic context.
However, the above "bowing out" breaks when a function after a class has PHP 8.0+ attributes attached to it and the sniff would still throw the
NewlinesAfterCloseBrace
error.Fixed now.
Includes tests.
Note: the new "errors" caused by the new tests are for the
MultipleClasses
code, which is unrelated to this fix and valid.Suggested changelog entry
Squiz.Classes.ClassDeclaration: correctly bow out from checking the "lines after class" when the next thing is a function with attribute(s).
Related issues/external references
Related to #152
Types of changes