-
-
Notifications
You must be signed in to change notification settings - Fork 903
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
Missing key not reported after generic function #8166
Comments
I don't think that it ever intended to work like that. Generics assert types - not values. Would you expect the following declaration to check ? /**
* @param InputType $arg
*
* @return InputType
function cloneIt(object $arg): object {
return clone $arg;
} |
$x = ['a' => 1];
var_dump($x['b']); PHPStan reports this. $y = strings($x); Here, $x's type is <'a',int>. @param array<T,mixed> $arr In this param definition, T is key type. @return array<T,string> By substituting T, we get return type array<'a',string> (array with enum key). var_dump($y['b']); Should be reported because $y type is <'a',string> I understand that implementing this may be a lot of work. |
Closes phpstan/phpstan#8166 Closes phpstan/phpstan#8127 Closes phpstan/phpstan#7944 Closes phpstan/phpstan#7283 Closes phpstan/phpstan#6653 Closes phpstan/phpstan#6196 Closes phpstan/phpstan#9084 Closes phpstan/phpstan#8683 Closes phpstan/phpstan#8074 Closes phpstan/phpstan#7984 Closes phpstan/phpstan#7301 Closes phpstan/phpstan#7087 Closes phpstan/phpstan#5594 Closes phpstan/phpstan#5592 Closes phpstan/phpstan#9472 Closes phpstan/phpstan#9764 Closes phpstan/phpstan#10092
Last night I came up with the idea that we mostly shouldn't generalize the generic type variables, except when they're in object generics, like Here's the resulting PR: phpstan/phpstan-src#2818 We can't do this for objects, because I want The new behaviour now only applies to bleeding edge (https://phpstan.org/blog/what-is-bleeding-edge) so definitely enable it to get the taste of the future 👍 |
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Bug report
Missing key not reported after generic function, but reported for directly defined variable.
See it in playground:
https://phpstan.org/r/bf679482-96aa-49b2-8ac9-6f77a3a24fb1
Code snippet that reproduces the problem
Expected output
Did PHPStan help you today? Did it make you happy in any way?
Yes, great tool.
The text was updated successfully, but these errors were encountered: