-
Notifications
You must be signed in to change notification settings - Fork 105
Add missing descriptors for SmallFloatType
and EnumType
#656
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
base: 2.0.x
Are you sure you want to change the base?
Conversation
2082cc3
to
2e8b2b6
Compare
path: src/Type/Doctrine/Descriptors/SmallFloatType.php | ||
|
||
- | ||
message: '#^Class Doctrine\\DBAL\\Types\\EnumType not found\.$#' |
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.
At first, I tried adding new doctrine versions to composer.json, but it would require bigger effort to adjust this repo to support those everywhere, so I just referenced those not-yet-existing classes.
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.
- tests describing what this actually fixes would be nice
|
||
namespace PHPStan\Type\Doctrine\Descriptors; | ||
|
||
class SmallFloatType extends FloatType |
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.
No inheritance please
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.
Are you sure? I believe SmallFloatType IS FloatType in terms of type descriptor.
use PHPStan\Type\StringType; | ||
use PHPStan\Type\Type; | ||
|
||
class EnumType implements DoctrineTypeDescriptor |
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.
Am I wrong or without this type the data is considered as mixed ?
Now with this, it will report error foo be 'A'|'B' but is string
on level 8 because the values option is not considered in the following code
#[ORM\Column(name: 'foo', type: Types::ENUM, options: ['values' => ['A', 'B'])]
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.
Am I wrong or without this type the data is considered as mixed ?
You are correct.
It is pretty painful to test new doctrine here (due to all the compatibility hacks). But added. |
eca8f6c
to
a59b33b
Compare
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.
The enum type will introduce new false-positive.
Before
/**
* @Column(type="enum", options={"values"={"a", "b", "c"}})
* @var 'a'|'b'|'c'
*
public $enum;
Was reported level 9 (mixed is not 'a'|'b'|'c')
and now will be reported on a lower level (string is not 'a'|'b'|'c')
Would it be possible to read the options ?
Yes, implemented. |
Great. Could add a test for the EntityColumnRule too
(I assume we just need to add an enum field in the BrokenEntity https://github.com/phpstan/phpstan-doctrine/blob/a1a9efb64708580a9d8b0d150340f7777d2b8aa0/tests/Rules/Doctrine/ORM/data/MyBrokenEntity.php) I assume that
shouldn't be reported but
should be reported |
Uh oh!
There was an error while loading. Please reload this page.