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