Squiz/MultiLineFunctionDeclaration: bug fix - skip over attributes #609
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 sniff looks for
T_COMMA
tokens to find the start of the next parameter and skips over parenthesis sets and square brackets sets (like short arrays) to prevent mismatching on aT_COMMA
which is not a parameter separator.This logic did not take parameter attributes into account, which can contain multiple comma-separated attributes, so should also be skipped over.
Fixed now. Includes plenty of tests.
Also includes minor stability fix for the parentheses/square brackets skipping.
Notes:
File::getMethodParameters()
method to do the parameter parsing instead. This could be done in a future iteration, but will need to be evaluated carefully for side-effects.FunctionDeclaration
sniff. It has been verified that that sniff is not affected by this bug.Suggested changelog entry
Fixed Squiz.Functions.MultiLineFunctionDeclaration did not skip over (parameter) attributes leading to false positives.
Related issues/external references
Fixes #608
Types of changes