BCFile/FunctionDeclarations::get[Method]Properties(): skip over closure use statements #573
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.
Sister-PR to upstream PR PHPCSStandards/PHP_CodeSniffer#421
This PR improves performance of the
BCFile::getMethodProperties()
and theFunctionDeclarations::getProperties()
methods and prevents incorrect return type information for closuresuse
clauses containing invalid variable imports in theuse
clause (defensive coding).Closure
use
statements can only import plain variables, not properties or other more complex variables.As things were, when such "illegal" variables were imported in a closure
use
, the information for the return type could get mangled.While this would be a parse error, for the purposes of static analysis, the
BCFile::getMethodProperties()
method and theFunctionDeclarations::getProperties()
method should still handle this correctly.This commit updates both methods to always skip over the complete
use
clause, which prevents the issue and improves performance as the same time (less token walking).Includes unit tests.