Matthew Brown
b0073d4558
Fix #2614 - prevent isset($string)
2020-01-13 21:27:09 -05:00
Тальгат Хайруллов
39a822759d
#2579 TooManyArguments was triggered if the variadic function declared at the autoloader file. Fixed. ( #2580 )
2020-01-12 11:33:38 -05:00
Matthew Brown
85966d8a21
Fix #2577 - fix list cast to array
2020-01-11 11:42:09 -05:00
Brown
2c7197ab4b
Fix #2578 - improve inference of functions beginning with assert
2020-01-09 15:45:17 -05:00
Brown
bd9142f131
Fix #2574 - remove assertions after increment
2020-01-09 11:51:56 -05:00
Pavel Batečko
702ca34c41
Improve array function types ( #2566 )
...
* Improve sorting function out types
* Improve return types of array_diff_assoc(), array_intersect_assoc()
* Fix versionCompareAsCallable test
2020-01-07 11:40:23 -05:00
Matthew Brown
90d6b73fd8
Fix taint analysis of binary operations
2020-01-07 08:50:31 -05:00
Matthew Brown
1f777bec0e
Capture non-empty-string from concat more effectively
2020-01-07 01:44:12 -05:00
Matthew Brown
ce5917c6fb
Add better string detection
2020-01-07 01:21:29 -05:00
Matthew Brown
b351df0483
Fix typo
2020-01-07 01:06:51 -05:00
Matthew Brown
eaae84c7f8
Fix concat emptiness
2020-01-06 21:30:19 -05:00
Matthew Brown
cc9e0fab67
Prevent string being used in non-empty-string location
2020-01-06 20:57:57 -05:00
Brown
5c45221bdc
Improve reconciliation of ||
...
Ref #2426
2020-01-06 16:37:44 -05:00
Brown
578b90c2da
Improve naming of variables
2020-01-06 16:03:17 -05:00
Brown
49d9dd12b6
Change $op_ to $right in a few more places
2020-01-06 15:44:48 -05:00
Brown
9149f468e6
Change var name
2020-01-06 15:42:06 -05:00
Brown
083fbc55e1
Add more specific UndefinedMagicMethod issue
2020-01-06 14:23:33 -05:00
Brown
8e786a17dd
Deal with a reconciled var more accurately
...
Ref #2426
2020-01-06 11:09:07 -05:00
Brown
cd0d118463
Fix count
2020-01-06 10:40:46 -05:00
Matthew Brown
8c71da75af
Add fix to more places
2020-01-06 09:47:14 -05:00
Matthew Brown
4888ae67a6
Fix #2558 - remove wedge clauses when they’re the only thing left
2020-01-06 08:56:50 -05:00
Matthew Brown
4e85967184
Fix tests
2020-01-05 21:58:18 -05:00
Matthew Brown
867511d7fd
Use more specific error magic properties
2020-01-05 21:07:26 -05:00
Matthew Brown
2fb5a9d326
Few small improvements
2020-01-05 18:37:07 -05:00
Matthew Brown
d4ef5c2a4a
Fix read flags
2020-01-05 17:20:09 -05:00
SignpostMarv
fbf66ba7f6
Typecast bool to int ( #2550 )
...
* adding specific checks for typecasting booleans, re: vimeo/psalm#2548
* satisfying phpcs
* amend check to use psalm types rather than php-parser types
* implementing tests for typecasting bools to int
* satisfying phpcs
2020-01-04 16:36:19 -05:00
Matthew Brown
37810b5a44
Fix #2552 - add parse error when encountering empty array values
2020-01-04 16:33:02 -05:00
Matthew Brown
8ecb8555e2
Fix count
2020-01-04 13:12:22 -05:00
Matthew Brown
37fb15250c
Add check for only simplest conditionals
2020-01-04 13:09:55 -05:00
Matthew Brown
8cbc26c2f1
Add range checks to identify for loops that always enter
2020-01-04 13:05:23 -05:00
Matthew Brown
9fa2db1b6c
Move Union::getTypes to Union::getAtomicTypes
2020-01-04 12:20:26 -05:00
Matthew Brown
ba6d0df048
Fix #2546 properly
2020-01-04 11:16:53 -05:00
Brown
996053cca6
Fix #2545 - fix bug when coming back after analysing method call in constructor
2020-01-03 11:29:45 -05:00
Brown
0e39759ed6
Improve solution to #2546 slightly
2020-01-03 10:56:47 -05:00
Brown
de0fad2197
Fix #2541 - check variable var assignment
2020-01-02 14:07:02 -05:00
Brown
ca1e65b29b
Handle iterators better
2020-01-02 10:41:43 -05:00
Matthew Brown
25e7039f02
The current method is used
...
Fixes #2540
2020-01-01 18:33:12 -05:00
Matthew Brown
4630d19d45
Fix psalm running
2020-01-01 12:49:12 -05:00
Matthew Brown
4021d673bd
Fix #2536 - grab binary op left assertions after analysis
2020-01-01 12:45:24 -05:00
Matthew Brown
5bd9b988fb
Fix #2494 - don’t use extended name for anonymous classes
2019-12-31 08:46:52 -05:00
Matthew Brown
44441042f0
Fix style things
2019-12-30 11:07:04 -05:00
Matthew Brown
366e2d30a3
Improve assertions support a bit more
2019-12-30 10:48:50 -05:00
Matthew Brown
19faa31865
Allow assertions on nested properties
2019-12-30 10:01:31 -05:00
Matthew Brown
c79ba0b09e
Include non-empty-string type in more places
2019-12-30 07:25:36 -05:00
Matthew Brown
023c4bcef0
Fix #2532 - fix templating inside class method when calling templated method
2019-12-30 07:25:36 -05:00
Matthew Brown
2b88261ecd
Fix templated assertion cc @vasily-kartashov
...
This is a good reason for you to skip 3.8.1
2019-12-29 11:57:54 -05:00
Matthew Brown
b375ebf06f
Fix test
2019-12-29 10:29:03 -05:00
Matthew Brown
26876b9a13
array_push shouldn’t change list type
2019-12-29 10:20:44 -05:00
Matthew Brown
0c7851ae21
Fix #2526 - always check for array assignment in assignop
2019-12-29 08:36:46 -05:00
Matthew Brown
55c2f7faa2
Fix #2508 - don’t replace templated types with generic ones inside own function
2019-12-28 18:38:02 -05:00
Matthew Brown
ce9435da19
Fix #2521 - use correct context class when analysing trait
2019-12-28 15:56:26 -05:00
Matthew Brown
982fe627e0
Fix #2515 - allow chained assertions on @psalm-mutation-free methods
2019-12-27 16:44:55 -05:00
Matthew Brown
068afa09d3
Add very basic implementation for class-string-map
...
Fixes #1969
2019-12-27 12:49:28 -05:00
Matthew Brown
2f2cd85a6a
Identify invalid static property array assignment
2019-12-27 10:34:51 -05:00
Matthew Brown
ee35db5a3b
Refine assignment somewhat
2019-12-22 12:43:57 +00:00
Matthew Brown
141bfd313f
Improve handling of assignments in arrays
2019-12-22 12:36:16 +00:00
Matthew Brown
8bd68608fa
Fix message
2019-12-22 11:08:47 +00:00
Matthew Brown
4c8730c5a3
Improve handling of unset array, ensuring that keys don’t persevere
2019-12-22 01:42:39 +00:00
Matthew Brown
946b4f73e6
Fix #2493 - don’t crash when provided function doesn’t exist
2019-12-21 00:34:31 +00:00
Matthew Brown
a4191171bf
Fix #2483 - treat intersecting PHPDocs from interfaces better
2019-12-20 01:42:57 +00:00
Matthew Brown
cc3df7d6be
Remove errant comma
2019-12-18 23:50:57 +00:00
Matthew Brown
af28d650f3
Fix #2408 - existing offsets checked with isset should be valid
2019-12-18 23:48:25 +00:00
Matthew Brown
734ad02203
Fix #2476 - flesh out iterable params
2019-12-18 17:19:54 +00:00
Matthew Brown
9d8ca08fb9
Fix #2479 - analyse undefined function arguments too
2019-12-18 16:37:48 +00:00
Brown
e551b24843
Classes that just reference themselves aren’t used
2019-12-16 11:46:10 -05:00
Matthew Brown
bf67c036aa
Fix #2474 - treat free-standing binaryops as ifs instead
2019-12-16 08:32:00 -05:00
Matthew Brown
090ad90de3
Fix build issues
2019-12-15 13:28:38 -05:00
Matthew Brown
72f3c306d7
Fix #2471 - don’t erroneously template class-strings
2019-12-15 13:23:04 -05:00
Matthew Brown
ce2e5b27c0
Fix #2470 - only parameterise constructors according to inherited params
2019-12-14 11:38:09 -05:00
Matthew Brown
c7a3ba9e4a
Refine callable type
2019-12-14 10:47:20 -05:00
Matthew Brown
b48021dbfd
Allow null return on template with null as type
...
Ref #2466
2019-12-13 21:56:43 -05:00
Brown
2469f04715
Improve reconciliation of arrays with constant offsets
2019-12-13 17:17:14 -05:00
Brown
6d02aa86e8
Reconcile string emptiness a bit better
2019-12-13 15:51:54 -05:00
Matthew Brown
ca5f8fabdc
Fix #2464 - null coalesce shouldn’t allow undefined vars
2019-12-13 08:06:40 -05:00
Matthew Brown
6ff312fe13
Fix test
2019-12-12 11:43:03 -05:00
Matthew Brown
1df77a9f43
Only mark vars as reconcilable if they can be memoized
2019-12-12 11:24:47 -05:00
Matthew Brown
f45014d403
Fix #2460 - allow assertions on immutable method calls
2019-12-12 09:32:33 -05:00
Matthew Brown
8f25183784
Fix #2459 - don’t add assertions to parent context unnecessarily
2019-12-12 00:37:00 -05:00
Brown
05783eb616
Find issues with impossible property values
2019-12-11 17:08:02 -05:00
Brown
d2b99cbe77
Add possibly defined vars in binary op analysis
2019-12-11 13:09:27 -05:00
Brown
e476eed111
Fix issue where inside_conditional is forgotten
2019-12-11 12:06:10 -05:00
Brown
3a7dd61889
Fix #2457 - allow psalm-type aliases to be used above return type
2019-12-11 10:30:40 -05:00
Brown
4b715cdbff
Fix #2456 - ignore UnusedFunctionCall when function asserts
2019-12-11 10:13:22 -05:00
Brown
b3cf9d3958
Catch circular references in constants
...
Fixes #2453
2019-12-10 16:16:44 -05:00
Brown
20049eb0b5
Fix #2437 - don’t worry about mixed templated param types
2019-12-10 14:58:26 -05:00
Brown
74de32fefe
Allow multiple @psalm-assert annotations for a given variable
2019-12-09 17:21:58 -05:00
Brown
b78acf796f
Fix #2445 - only generalise param when it’s generic
2019-12-09 10:58:09 -05:00
Matthew Brown
e3d108ebd9
Fix #2439 - fix templating of class-string<T>::returnsStatic
2019-12-08 21:12:25 -05:00
Matthew Brown
69e6624b16
Fix #2436 - fix templating of property types inside templated functions
2019-12-08 19:25:40 -05:00
Matthew Brown
02fbf12337
Only warn about clauses in the currently-scanned conditional
2019-12-08 16:35:56 -05:00
Matthew Brown
c9f43782fd
Fix mixed method issues after defining new type
2019-12-08 10:17:40 -05:00
Matthew Brown
83b10bb9af
Fix #2426 , or at least some of it
2019-12-08 00:49:34 -05:00
Matthew Brown
2e00ad2240
Treat more things as assignments
2019-12-07 15:58:05 -05:00
Matthew Brown
f0cd7eab04
Remove redundant calls
2019-12-07 14:05:43 -05:00
Matthew Brown
3c52102388
Fix #2438 - improve handling of get_class calls
2019-12-07 14:03:20 -05:00
Matthew Brown
2b6831ba10
Fix too-long line
2019-12-07 01:38:24 -05:00
Matthew Brown
df395944f8
Change how $changed_var_ids is communicated
2019-12-07 01:23:35 -05:00
Brown
ef44bd104e
Consolidate some fixes from the binaryop branch
2019-12-06 12:47:27 -05:00
Brown
19838fc7f5
Fix #2423 - pass by ref variable status after byref assignment
2019-12-05 13:37:03 -05:00
Brown
8ff33ee64d
Fix #1943 - give up analysing really complicated conditionals
2019-12-05 10:26:53 -05:00
Tyson Andre
6b2c1401c8
Workaround for uncaught InvalidArgumentException ( #2420 )
...
Fixes #2419
2019-12-04 23:16:51 -05:00
Brown
e1dd22ef6c
Allow static::class to be used in array assertions
2019-12-04 12:23:26 -05:00
Brown
821f3528d2
Fix #701 - indicate issues fixable with Psalter
2019-12-02 15:24:01 -05:00
Matthew Brown
27c9aa4286
Fix code and test
2019-12-01 10:43:51 -05:00
Matthew Brown
f21150b8ad
Fix #2384 - fix resolution of @param-out template types
2019-12-01 10:40:53 -05:00
Matthew Brown
ef829002bf
Fix ref
2019-12-01 10:33:27 -05:00
Matthew Brown
e40aaafe61
Allow explicit @var mixed docblocks
...
Fixes #2397
2019-12-01 10:19:42 -05:00
Matthew Brown
2383945fb9
Support __METHOD__ and __FUNCTION__ magic constants better
2019-11-29 22:47:20 -05:00
Matthew Brown
6a98108deb
Apply @ShiraNai7’s fix for null const values
2019-11-29 10:12:46 -05:00
Pavel Batečko
dc78e9c57b
Update password function types for PHP 7.4 ( #2396 )
...
* Support NULL predefined constants
* Fix #2395 - update password_hash() and password_needs_rehash() types for PHP 7.4
* Change $fq_const_name check so it still uses isset
2019-11-29 09:30:01 -05:00
Matthew Brown
4052e6dfac
Allow isset to check for property initialisation
...
Ref #2382
2019-11-28 09:12:17 -05:00
Matthew Brown
113bf921f6
Add support for arrow function inference
2019-11-27 10:12:59 -05:00
Matthew Brown
4334ddcaa3
Fix style
2019-11-27 02:11:18 -05:00
Matthew Brown
3f2d57c7a3
Fix #2379 - support spread array RFC
2019-11-27 02:07:17 -05:00
Matthew Brown
c75f7dc4d5
Fix #2339 - add support for null coalescing operator
2019-11-27 00:34:23 -05:00
Matthew Brown
d1fbd1fa26
Add working arrow-functions implementation
2019-11-26 23:52:26 -05:00
Brown
f97a8f0d5b
Use more accurate way to determine list size
2019-11-26 16:34:19 -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
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
Brown
81f513bb4c
Fix #2358 - always analyse new XXX(...) in unknown method calls
2019-11-18 16:14:21 -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
Matthew Brown
5fabf41c8e
Check for not-callable return value
2019-11-14 07:57:22 -05:00
Brown
00be4c2071
Mark var as unused
2019-11-13 15:06:22 -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
7b719915f5
Fix style things
2019-11-12 10:21:27 -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
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
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
895737d8be
Fix style
2019-11-08 12:49:53 -05:00