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.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crumble removed TypeHintDeclaration sniff #139
Crumble removed TypeHintDeclaration sniff #139
Changes from all commits
efa7ae9
27d7fd4
a52dae5
67ca9e1
8d8df28
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It isn't fully clear to me why we are targeting
Collection
as a specific type here.Would need:
@var Collection<TKey, TVar>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same reason why all other sniffs of this kind add this: to ensure that a parameter with a
Collection
type hint also gets a proper@param
or@return
annotation that clarifies its type (as is done witharray
).+1 on adding tests for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, but shouldn't this be done with any
Traversable
then?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was migrated from deprecated sniff.
According to docs, this forces to write
\Doctrine\Common\Collections\Collection|Foo[]
.Personally, I always write
\Doctrine\Common\Collections\Collection<Foo>
. If it was on me, I'd throw it away.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
array
anditerable
are always treated as such. This list is in addition to the ones where the sniff requires it by default.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alcaeus by default it seems to be empty https://github.com/slevomat/coding-standard/blob/7a9530a05f7b93cd3cdb8c475f743f97a447aae4/SlevomatCodingStandard/Sniffs/TypeHints/ParameterTypeHintSniff.php#L343-L351
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alcaeus Only
iterable
andarray
are covered by default. You can use DisallowArrayTypeHintSyntaxSniff and use always generic.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like the idea of enabling
DisallowArrayTypeHintSyntaxSniff
WDY-all-T?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please create a separate PR for that so the deciders can vote on it. Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I add only Traversable there it is not applied to eg. Iterator. So we have to explicitly name everything, that implements Traversable