Comments (4)
I'm confused why Collection|Foo[]
is ambiguous (@ondrejmirtes is there any reason for such behavior?).
If one means a collection of objects why not simply use Collection<Foo>
?
In PSR-5 []
is clearly defined as an array.
from php-cs-fixer-custom-fixers.
Collection|Foo[]
was popular back in the old days (think when NetBeans was the popular IDE) to mean Collection of Foo
. So when PHPStan sees Collection|Foo[]
and Collection
is iterable, it does this.
Yeah, I'd like to not use this syntax anymore, but it's out there so PHPStan needs to understand this. To disambiguate it to mean "Collection or array", you can do Collection|array<Foo>
.
It's described in the docs: https://phpstan.org/writing-php-code/phpdoc-types#iterables
from php-cs-fixer-custom-fixers.
FYI: it was fixed in PHPStorm, I just checked on our codebase and there's valid autocomplete even after removing |Foo[]
part. In our case we need to get rid of that legacy union type, so feel free to close this if you don't feel the need to provide such improvement 😉.
For now we have clone of your fixer with additional condition in the fixType()
method:
// CHANGED: Do not touch complex types (e.g. `FooCollection|Foo[]`)
if (strpos($type, '|') !== false || strpos($type, '&') !== false) {
return $type;
}
from php-cs-fixer-custom-fixers.
Based on Ondrej's answer (and the fact that doing this will be tricky) let's not add support to exclude this scenario.
from php-cs-fixer-custom-fixers.
Related Issues (20)
- BC-break in DataProviderStaticFixer HOT 2
- Request: empty method to single line HOT 2
- Help in the installation of "php-cs-fixer-custom-fixers". HOT 1
- PromotedConstructorPropertyFixer should check variable names HOT 1
- Please provide readonly flag to promoted constructor properties
- StringableInterfaceFixer keeps spawn one more \Stringable every run if Stringable is imported from global namespace HOT 2
- White line between promoted properties with attributes HOT 2
- Feature Request: Add MultilinePromotedPropertiesWithAttributesFixer HOT 1
- Use of mutation testing in php-cs-fixer-custom-fixers - Help needed HOT 1
- In Fixer class, DirectoryIterator does not work correctly in getIterator method, it gets only part of files.
- MultilinePromotedPropertiesFixer: Fix only with at least 2 arguments
- `MultilinePromotedPropertiesFixer`: keep blank lines between properties HOT 4
- MultilinePromotedPropertiesFixer with line length HOT 1
- ConstructorEmptyBracesFixer no longer works on 3.19.2 version HOT 2
- NoSuperfluousConcatenationFixer replaces double quotes w single quotes HOT 2
- PromotedConstructorPropertyFixer suggestions HOT 2
- StringableInterfaceFixer rule adds unnecessary Stringable to implements list HOT 4
- `NoImportFromGlobalNamespaceFixer` bug
- Feature request: doctrine migration remove method getDescription
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from php-cs-fixer-custom-fixers.