File::getMethodProperties(): skip over closure use statements #421
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
This PR improves performance of the
File::getMethodProperties()
method and prevents incorrect return type information for closureuse
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
File::getMethodProperties()
method should still handle this correctly.This commit updates the
File::getMethodProperties()
method to always skip over the completeuse
clause, which prevents the issue and improves performance as the same time (less token walking).Includes unit tests.
Suggested changelog entry
File::getMethodProperties(): small performance improvement & more defensive coding