1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-14 18:36:58 +01:00
Commit Graph

4208 Commits

Author SHA1 Message Date
Matthew Brown
c75f7dc4d5 Fix #2339 - add support for null coalescing operator 2019-11-27 00:34:23 -05:00
Matthew Brown
d1c4c85f97 Support covariant return types & contravariant param types
Fixes #2102 and #2264
2019-11-27 00:19:36 -05:00
Matthew Brown
2c08321603 Ignore union types for now 2019-11-27 00:00:46 -05:00
Matthew Brown
d1fbd1fa26 Add working arrow-functions implementation 2019-11-26 23:52:26 -05:00
Brown
90cb3f4472 Speed up accessing node data
Ref #1837
2019-11-26 17:48:47 -05:00
Brown
f97a8f0d5b Use more accurate way to determine list size 2019-11-26 16:34:19 -05:00
Pavel Batečko
4e594e0a65 Improve array function list handling (#2377)
* array_column() returns a list unless the 3rd arg is passed

* array_pad() return type provider

* array_chunk() return type provider

* array_map() preserve list types
2019-11-26 14:48:49 -05:00
Brown
2f02da62c1 Add note to future self 2019-11-26 14:47:07 -05:00
Lars Strojny
9d32273029 Fix typo in InfiniteIterator type definition (#2378) 2019-11-26 14:20:40 -05:00
Brown
7ccd73b5e3 Fix redundant condition 2019-11-26 12:32:07 -05:00
Brown
842b2a53df Refine lists with object-like array types
Fixes #2357
2019-11-26 12:22:28 -05:00
Brown
532e2d64be Allow using covariant template in mutation-free context 2019-11-26 11:35:03 -05:00
Brown
736ccd84cd Allow more generic iterable when yielding
Fixes #2353
2019-11-25 16:12:44 -05:00
Brown
5626058eff Fix #2374 - refine error-suppressed output a little better 2019-11-25 15:38:54 -05:00
Brown
1f07ea7ee7 Tighten up Psalm’s inference 2019-11-25 15:20:31 -05:00
Brown
95f7a389e1 Remove dud file 2019-11-25 13:09:06 -05:00
Brown
96c4eeec98 When calling magic method clone node info 2019-11-25 13:08:38 -05:00
Brown
1add42b691 Fix switch handling 2019-11-25 11:51:34 -05:00
Brown
0bcb7863f3 Use better system for storing inferred types and assertions 2019-11-25 11:44:54 -05:00
Takefumi Katsuren
da489d4b27 imagepng accepts resource at Argument 2 (#2373) 2019-11-24 20:15:05 -05:00
Brown
78a3894403 Fix Psalm errors 2019-11-21 11:03:18 -05:00
Brown
06653f6322 Fix #2362 - support single value type in docblocks 2019-11-21 10:44:24 -05:00
Matthew Brown
4c2f7ad8db Add slash 2019-11-21 09:06:19 -05:00
Matthew Brown
2b1b0f6c34 Return 0 2019-11-21 09:02:56 -05:00
Matthew Brown
3d9c94e29a Fix #2363 - catch possible class not found errors when getting method 2019-11-21 08:56:47 -05:00
Bruce Weirdan
c50a17d415 Scan shape properties (#2359)
This prevents crashes when built-in classes are referenced by shape
properties.

Fixes vimeo/psalm#2331
2019-11-18 19:01:12 -05:00
Brown
81f513bb4c Fix #2358 - always analyse new XXX(...) in unknown method calls 2019-11-18 16:14:21 -05:00
Matthew Brown
e76beffa78 Fix #2355 - don’t remove used variables 2019-11-17 14:53:08 -05:00
Tyson Andre
ecf3abc396 Fix redundant condition (#2338)
TGenericObject is always a TNamedObject
2019-11-17 14:29:38 -05:00
Matthew Brown
2369bac943 Preserve self refs where possible 2019-11-16 19:59:08 -05:00
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