1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-16 19:36:59 +01:00
Commit Graph

4178 Commits

Author SHA1 Message Date
Matthew Brown
7d7d4dd926 Fix style stuff 2019-11-15 21:47:53 -05:00
Brown
55bf6a2db3 Migrate static return types 2019-11-15 16:50:43 -05:00
Brown
4747ba709a Migrate more things 2019-11-15 15:34:25 -05:00
Brown
5e17a9af10 Fix #2348 - ensure all functions and methods return some type 2019-11-14 14:44:29 -05:00
Brown
b3a15e8016 Fix #2349 - allow suppression of InvalidReturnType for no-return 2019-11-14 14:33:07 -05:00
Brown
d5b90f6887 Fix #2333 - don’t create array after empty check 2019-11-14 14:23:33 -05:00
Brown
8777c952c8 Fix #2330 - allow empty checks against numeric 2019-11-14 13:31:50 -05:00
Brown
09aafa40c0 No exception when file has issues 2019-11-14 12:54:35 -05:00
Brown
738ce4f850 Fix re-added function storage removal 2019-11-14 12:17:17 -05:00
Brown
b693b726c7 Improve handling of default extended params 2019-11-14 12:12:09 -05:00
Brown
70b8df268d Fix template covariance calculation, use container covariance not inputs 2019-11-14 11:43:49 -05:00
Brown
939be92f29 Fix stubbing in end-to-end tests 2019-11-14 11:03:41 -05:00
Brown
a5c3304853 Add support for if replacement 2019-11-14 11:03:16 -05:00
Matthew Brown
8154a9ef16 Fix #2340 - don’t stub functions unnecessarily 2019-11-14 09:27:19 -05:00
Matthew Brown
5fabf41c8e Check for not-callable return value 2019-11-14 07:57:22 -05:00
Matthew Brown
0b1f83ff98 Fix #2346 - map covariance of templated return types when extending with more params 2019-11-14 07:45:20 -05:00
Brown
00be4c2071 Mark var as unused 2019-11-13 15:06:22 -05:00
Brown
fe5e675881 Improve unvariable removal 2019-11-13 15:05:21 -05:00
Brown
c9e7dcfa92 Fix false positive UnusedVariable 2019-11-13 14:32:27 -05:00
Brown
7516b7b0cf Fix #2336 - detect used variable in mixed array offset 2019-11-13 13:38:34 -05:00
Brown
4be3180512 Add more impure functions 2019-11-13 13:22:04 -05:00
Matthew Brown
975ff9250b Fix #2328 - don’t crash on unexpected divider 2019-11-13 01:13:29 -05:00
Brown
7b719915f5 Fix style things 2019-11-12 10:21:27 -05:00
Brown
25b60eb944 Fix #2325 - ignore unused vars with $_ prefix 2019-11-12 10:20:34 -05:00
Brown
7f5af741f7 Improve assertion calculation on mixed vars 2019-11-12 10:12:07 -05:00
Matthew Brown
7012bedf4e Fix #2326 - substitute static more responsibly in generic objects 2019-11-12 08:01:22 -05:00
Matthew Brown
b1aae0d1a5 Fix more try/catch stuff 2019-11-12 00:52:10 -05:00
Brown
51557c44ea Evaluate finally blocks at the end of every catch 2019-11-11 18:38:33 -05:00
Brown
da03902f76 Fix handling of do... while vars defined in try 2019-11-11 18:24:43 -05:00
Brown
f22266b2ff Improve reasoning around try/catch possibly-undefined vars 2019-11-11 17:42:46 -05:00
Brown
1a54aa5752 Fix test 2019-11-11 17:07:26 -05:00
Brown
cd2f8e7d65 Fix memory corruption 2019-11-11 16:56:44 -05:00
Brown
935bad9d2c Fix erroneous unused variable 2019-11-11 16:52:55 -05:00
Brown
d15989c975 Allow catch to assume no try statements completed 2019-11-11 15:17:53 -05:00
Brown
658f86c277 Fix #2324 - avoid fatal error on self string in callable 2019-11-11 14:59:05 -05:00
Brown
fbd1cf0a71 Fix #2322 - don’t update outer context if elseif has no leaving statements 2019-11-11 11:46:27 -05:00
Brown
96586f16c0 Fix phpcs issues 2019-11-11 10:11:42 -05:00
Brown
af5f83602e Break out more specific possibly defined offset errors 2019-11-11 09:59:56 -05:00
Brown
46d163996e Fix #2321 - prevent inferred template coercion 2019-11-11 09:14:34 -05:00
Bruce Weirdan
79acbadfad Added InvalidParent issue (#2320)
Refs vimeo/psalm#2304
2019-11-11 00:21:43 -05:00
Matthew Brown
2fc7f5fdf7 Fix #1830 - infer key type after array_key_exists check 2019-11-10 14:23:53 -05:00
Matthew Brown
94d4b876ba Fix #2177 - mark variables in try block as potentially undefined 2019-11-09 12:25:30 -05:00
Matthew Brown
62a3598ed3 Fix #2197 - prevent false positive from try in while 2019-11-09 11:01:48 -05:00
Matthew Brown
7028a64440 Fix #2204 - fix try/catch false-positive 2019-11-09 10:39:21 -05:00
Brown
4e5af3490a Fix #2315 - allow Traversable->iterable templated casting 2019-11-08 13:11:01 -05:00
Brown
895737d8be Fix style 2019-11-08 12:49:53 -05:00
Brown
ac6256e645 Fix #2312, improve understanding of template replacement 2019-11-08 11:56:41 -05:00
Joram Schrijver
c97ba8f713 Implement type-checking and forbidding for print (#2314)
* Add type-checking for print

* Allow print to be forbidden
2019-11-08 07:01:34 -05:00
Joram Schrijver
e79a0cc8f0 Make --init use vendor-dir from composer.json (#2313) 2019-11-08 06:59:04 -05:00
Baptiste Clavié
5217156068 Support comments in ErrorBaseline (#2311) 2019-11-07 13:03:18 -05:00
Brown
3d7b34e7f6 Fix #2273 - ensure all template params are bound 2019-11-07 11:03:41 -05:00
Brown
3cf16c8ef3 Add back arg 2019-11-07 09:56:27 -05:00
Brown
86b6801066 Fix #2294 - detect invalid callble due to __invoke 2019-11-07 09:39:24 -05:00
Brown
64996f464e Prevent empty array workaround to #2308 2019-11-06 16:59:08 -05:00
Brown
06b64a4a01 Detect erroneous use of empty check on bools 2019-11-06 16:14:46 -05:00
Brown
3e98c800ec Fix #2309 - prevent closure-inferred generic template params overwriting parent ones 2019-11-06 13:13:02 -05:00
Brown
a8ed6ba9c4 Fix #2308 - prevent specialisation from bound params 2019-11-06 11:20:51 -05:00
Matthew Brown
d7e435c352 Add slashes 2019-11-05 19:08:16 -05:00
Matthew Brown
050045209f Only allow string offset assignment when offset is integer 2019-11-05 19:05:43 -05:00
Matthew Brown
cbaf050bd2 Fix #2307 - allow setting of array string offset 2019-11-05 19:03:59 -05:00
Matthew Brown
b81a2d3852 Fix #2306 - allow nullable templated params to be compared to null 2019-11-05 18:37:46 -05:00
Brown
818f0c0985 Flesh out list types
Fixes #2300
2019-11-05 13:08:12 -05:00
Brown
5c8cb37b0f Fix #2301 - do a naive projection of template params 2019-11-05 12:59:56 -05:00
Brown
d8ae33957d Fix strtolower ref 2019-11-04 15:14:07 -05:00
Brown
1f42843d42 Fix #2296 - use case insensitive closure ids 2019-11-04 14:48:02 -05:00
Brown
4bf632bc23 Only extend covariant flag to vars without template param 2019-11-04 11:12:59 -05:00
Brown
4f9cf54005 Use unaliased name for external hook 2019-11-04 10:13:12 -05:00
Brown
e7330afe8b Fix #2295 - support special case of array_shift on known offset type 2019-11-04 09:21:13 -05:00
Matthew Brown
8dffd65a59 Preserve possible-undefinedness 2019-11-04 07:12:22 -05:00
Matthew Brown
5faebe2674 Fix templated assertion handling for static methods 2019-11-04 05:31:45 -05:00
Matthew Brown
8f421dc0bb Refactor template calculation out from Psalm\Type\Union 2019-11-03 21:27:40 -05:00
Matthew Brown
7c4c78f67e Fix #2271 - treat array_replace same as array_merge 2019-11-02 10:15:03 +01:00
Pavel Batečko
b229ac875d Improve return types of explode() with limit (#2286) 2019-11-02 10:10:38 +01:00
Matthew Brown
a82e35a59f Fix #2291 - extended covariant template param types should be treated as covariant 2019-11-01 18:25:07 +01:00
Matthew Brown
bab7e46983 Fix #2281 - allow lists to accept list types 2019-11-01 13:35:16 +00:00
Matthew Brown
050eb82f04 Fix #2290 - detect call on void type 2019-11-01 13:05:28 +00:00
Jáchym Toušek
f2c82fa212 Add support for Iterator<X> type (#2285)
* Add support for Iterator<X> type

* Fix tests
2019-10-30 18:00:27 +00:00
Matthew Brown
4845bbbd49 Improve solution to extended type juggling 2019-10-29 19:30:19 +00:00
Matthew Brown
8d7cdeb8ec Fix #2275 - allow extended templated types to bypass mixed type coercion rules 2019-10-29 10:07:34 +00:00
Matthew Brown
0ac5c32f2f Fix #2277 - scan psalm-assert types always 2019-10-25 23:39:33 +02:00
Brown
8876499ddd Fix #2252 - allow destructuring of ArrayAccess objects 2019-10-22 11:17:42 -04:00
Brown
353cf2351e Fix #2259 - if error suppression is use, list destructuring values will be nullable 2019-10-22 10:40:37 -04:00
Mikko Pesari
e82d3c438d Fix wrong annotations in ext-ds method stubs (#2263)
* Fix wrong annotation for class implementing an interface

* Fix unrecognised annotations
2019-10-22 09:33:23 -04:00
Joram Schrijver
39b25f9008 Fix ArrayIterator::{uasort,uksort} parameter type (#2254) 2019-10-22 08:45:25 -04:00
Mikko Pesari
fc16eb5e92 Fix Ds\Set method stubs (#2261)
* Fix constructor parameters

* Add missing @param name

* Add missing implements
2019-10-22 06:12:35 -04:00
Brad Kent
6e6eea010b callMap updates: unregister_tick_function, ReflectionClass::getInterfaceNames, ReflectionObject::getInterfaceNames (#2258) 2019-10-21 14:29:48 -04:00
Mikko Pesari
80665850db Add method stubs for Ds\Set (#2255)
* Fix typo

* Add method stubs for Ds\Set
2019-10-21 10:06:26 -04:00
Matthew Brown
233977a764 Fix undefined array offset when too few iterator params supplied 2019-10-21 07:13:33 -04:00
Tyson Andre
94636476d2 Fix checking if union type with mixed is nullable (#2253)
Fixes #2249
2019-10-20 17:06:59 -04:00
Matthew Brown
05ace25817 Fix #2246 - fix return type of array_slice to be a list 2019-10-20 16:19:01 -04:00
Matthew Brown
b476761109 Fix #2235 - improve behaviour of array_merge on lists 2019-10-20 15:47:00 -04:00
Matthew Brown
1d6ca9bd7d Allow callable-array type in docblocks 2019-10-20 15:33:57 -04:00
Matthew Brown
4aeb28aceb Fix #2244 - correctly check do while expression before use 2019-10-20 14:18:30 -04:00
Matthew Brown
3bb0016434 Fix #2251 - add support for yielding from lists 2019-10-20 12:09:04 -04:00
Matthew Brown
22e35a7233 Improve message for mixed method call 2019-10-20 11:13:23 -04:00
Matthew Brown
0a35c9cd6a Remove unnecessary computation 2019-10-19 23:03:59 -04:00
Matthew Brown
5910a362ea Improve report output of taint analysis 2019-10-19 17:59:10 -04:00
Brown
8978e5c7f1 Add sink for print_r 2019-10-18 15:28:15 -04:00
Brown
2be489c527 Fix regression when identifying clauses in error 2019-10-18 15:06:37 -04:00
Brown
89752b8574 Support ext-ds and fix offset count 2019-10-18 11:35:24 -04:00
Brown
dda68228f3 Fix #2247 - don’t crash when yielding from class with too many template params 2019-10-18 11:01:16 -04:00
lhchavez
216f991b0c Normalize stringified type names (#2239)
This change makes stringified types more normalized. Concretely it sorts
all union types, reconciled types, and sorts the keys within object-like
types.
2019-10-17 01:14:33 -04:00
Matthew Brown
e8618371fb Refine isset checks 2019-10-17 01:09:21 -04:00
Matthew Brown
54a31f8cff Be more scrupulous about mixed vars 2019-10-17 00:29:51 -04:00
Matthew Brown
29902c8b99 Fix #2237 - suppress reconciling issues when inherited clauses couldn’t be resolved into types 2019-10-16 21:55:11 -04:00
Brown
d52d9b6552 Fix #2234 - treat continuous assertions on interfaces as redundant 2019-10-16 18:43:03 -04:00
Matthew Brown
7b522af169 Provide necessary typehint 2019-10-15 20:41:06 -04:00
Matthew Brown
9115ffd237 Fix #2215 - refine closure type if it doesn’t clash 2019-10-15 20:34:41 -04:00
Brown
b29227aaf6 Allow taints to be removed via annotation 2019-10-15 16:25:27 -04:00
Brown
22a12444df Fix #2220 - detect destructuring of non-array 2019-10-15 13:55:30 -04:00
Brown
aa5d82d30d Fix #2228 - load functions defined on traits included in a class 2019-10-15 12:09:08 -04:00
Brown
5e649f684c Fix erroneous return type resolution 2019-10-14 17:10:30 -04:00
Matthew Brown
3dc96edf08 Update file references again 2019-10-13 23:37:15 -04:00
Matthew Brown
477fa8cba8 Set file references before they’re used 2019-10-13 23:30:01 -04:00
Matthew Brown
a0d484a314 Reduce duplicate calls 2019-10-13 22:05:16 -04:00
Matthew Brown
8c6b234c2c Improve speed of taint analysis 2019-10-13 20:10:31 -04:00
Matthew Brown
e1e2ff3e57 Improve shuffling 2019-10-13 20:09:50 -04:00
Matthew Brown
7e76d3386d Fix phpcs issues 2019-10-13 12:38:16 -04:00
Matthew Brown
3c00f3d029 Limit taint file re-analysis 2019-10-13 12:34:40 -04:00
Matthew Brown
cd8534fb6c Shuffle file analysis order for more even threaded workload distribution 2019-10-13 12:33:18 -04:00
Matthew Brown
d0a9bf24f8 Void-returning functions are going to be impure 2019-10-13 09:51:25 -04:00
2e3s
a658566429 Add impure functions for mcrypt and iterator_apply (#2227) 2019-10-13 09:43:25 -04:00
Matthew Brown
7e2d00d6ed Allow taints to be added to root array types 2019-10-12 12:23:40 -04:00
Matthew Brown
e5623e9257 Fix function call 2019-10-11 23:33:36 -04:00
Matthew Brown
4478d31593 Taint arrays in creation 2019-10-11 23:28:17 -04:00
Matthew Brown
5918278af3 Fix cache growth thanks to array_recursive 2019-10-11 20:17:07 -04:00
Brown
09cf864d9b Mark preg_replace_callback as sometimes-pure 2019-10-11 13:54:33 -04:00
Brown
3f837a3493 Fix #2192 - allow static return value on templated object 2019-10-11 12:02:41 -04:00
Matthew Brown
7857b07f91 Fix list-could-be-array issue 2019-10-11 08:24:35 -04:00
Matthew Brown
1a1b3a10a9 Fix #2225 - iterator_to_array can return a list 2019-10-10 23:47:11 -04:00
Matthew Brown
0556f28a9f Fix #2224 - make sure literal strings are put into appropriate arrays when templating 2019-10-10 23:38:57 -04:00
Matthew Brown
c419e0e798 Fix #2222 - check for @throws docblock inheritance 2019-10-10 22:44:21 -04:00
Matthew Brown
03c39cbe7c Fix #2223 - make sure lists are handled in more places 2019-10-10 20:16:43 -04:00
Brown
3658771bff Fix #2221 - variadic args are lists 2019-10-10 17:46:20 -04:00
Brown
67b32f463e Support assertions on lists 2019-10-10 10:57:43 -04:00
Brown
99c91efbc6 Add support for reconciling callable lists 2019-10-10 10:34:31 -04:00
Brown
cc9a925e84 Allow list to be coerced to callable 2019-10-10 10:26:13 -04:00
Brown
a05f4744cb Only show taint issues when tracking tainted input 2019-10-09 14:26:32 -04:00
Brown
50e729a6d1 Fix more list issues 2019-10-09 13:42:39 -04:00
Brown
e822ec7541 Unsetting list elements should turn to an array 2019-10-09 12:49:31 -04:00
Brown
54d5a25077 Remove known array offsets after altering array 2019-10-09 10:36:55 -04:00
Brown
b75720c32b Add more list types 2019-10-09 10:04:34 -04:00
Brown
0b0534d41b Add more list annotations to Psalm’s codebase 2019-10-09 09:17:43 -04:00
Matthew Brown
10b0be3650 Fix explode 2019-10-09 07:44:26 -04:00
Matthew Brown
c7600fde10 Fix #2217 - interpret callable self return type references properly 2019-10-09 07:40:42 -04:00
Matthew Brown
51cfd556d6 Add non-empty-list support 2019-10-08 22:53:55 -04:00
Matthew Brown
6a07757b9a Fix tests 2019-10-08 22:41:23 -04:00
Matthew Brown
d7007c3b76 Fix casing 2019-10-08 22:25:15 -04:00
Matthew Brown
38de68f507 array_values should preserve array non-emptiness 2019-10-08 22:22:58 -04:00
Matthew Brown
5cdc3aa6d4 Remove tautological statement 2019-10-08 21:39:28 -04:00