1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-17 03:47:04 +01:00
Commit Graph

824 Commits

Author SHA1 Message Date
Matthew Brown
4707b21227 Fix tests 2020-02-21 22:15:25 -05:00
Brown
7d99a15072 Fix #2805 - forbid passing in mutable class to mutation-free context 2020-02-21 18:25:35 -05:00
Matthew Brown
aea33824e6 Fix #1555 - allow phantom class constants 2020-02-18 19:46:05 -05:00
Brown
0e23fab5d2 Detect bugs similar to that which caused #2832 2020-02-18 12:53:54 -05:00
Brown
6e8088776d Use better return type for SimpleXMLElement::offsetGet 2020-02-18 10:58:56 -05:00
Matthew Brown
ced092874a Make config generation smarter 2020-02-17 22:05:58 -05:00
Matthew Brown
00afcda5e0 Fix #2824 - allow unpacking of non-arrays with template params 2020-02-17 19:54:11 -05:00
Matthew Brown
3feccc1f98 Fix tests 2020-02-14 22:24:39 -05:00
Matthew Brown
653353709a Use MethodIdentifier object instead of string 2020-02-14 20:54:26 -05:00
Matthew Brown
422bd25f04
Maybe fix indentation 2020-02-13 19:33:47 -05:00
Matthew Brown
3efe271819
Remove blank line 2020-02-13 18:36:37 -05:00
Matthew Brown
95e1bc0c48
Fix line breaks 2020-02-13 18:32:40 -05:00
Brown
b87161785d Be even more permissive 2020-02-13 17:58:15 -05:00
Brown
bc0ccbda99 Add better inference for lower-cased methods 2020-02-13 17:30:00 -05:00
Brown
1c42875179 Support lowercase-string and warn about unnecessary calls to strtolower 2020-02-13 16:38:58 -05:00
Philip Hofstetter
395cf587d3 add plugin hook to be called after every function call
compared to AfterFunctionCallAnalysisInterface which gets only called
after a call to a function declared within the project, a plugin
implementing AfterEveryFunctionCallAnalysisInterface will get called for
every function call, including calls of PHP builtins.

On the other hand, this interface doesn't allow modification of the code
nor tweaking the return type, but it's still useful for accounting
purposes and for depreacting calls to PHP builtins

this fixes #2804
2020-02-13 09:10:24 -05:00
Matthew Brown
7d88100ad3 Docblock-provided type is not inferred 2020-02-12 11:34:54 -05:00
Brown
f141f7c526 Improve --diff checks by including trait-using classes in dependents 2020-02-11 16:39:33 -05:00
Brown
89a0b101e4 Fix #2784 - no crash when get_class arg is mixed 2020-02-10 14:44:33 -05:00
Matthew Brown
3559fdd6b3 Fix #2742 - prevent paradoxes in assert calls 2020-02-09 11:42:41 -05:00
Matthew Brown
4de6f5c4ec Fix #2442 - using asserting after a MixedAssignment removes that error 2020-02-08 23:01:45 -05:00
Matthew Brown
5f4d797fe1 Fix #2772 - add support for multiple array_map function param inference 2020-02-08 12:17:57 -05:00
Matthew Brown
966336a475 Improve byref array handling 2020-02-06 23:52:27 -05:00
Brown
d5f71bf529 Localise template checks to class being tested 2020-02-06 16:38:45 -05:00
Brown
54efbbe831 Fix bad assertion 2020-02-06 16:32:26 -05:00
Brown
9af12932b5 Add slash 2020-02-06 15:09:34 -05:00
Brown
6116b457ed Port over more fixes from template match refactor 2020-02-06 15:07:57 -05:00
Matthew Brown
93fc1b1cc7 Fix #2729 - allow mutation of otherwise-readonly properties 2020-02-02 15:35:12 -05:00
Matthew Brown
8d7fb2b415 Add config flag to support properties without a magic getter 2020-02-02 14:23:38 -05:00
Matthew Brown
43c7b00cd0 Fix #2734 - allow is_a to operate on templated class-strings 2020-02-02 12:26:28 -05:00
Matthew Brown
f0fc9cce5f Fix missing param doc 2020-02-01 18:24:09 -05:00
Matthew Brown
d0b87b6cb0 Fix #2723 - use magic method return type where necessary 2020-02-01 18:21:32 -05:00
Brown
3b6f53a356 Revert "Fix #2724 - make sure behaviour is not dependent on array type"
This reverts commit 1df03b0ff2.
2020-01-31 17:25:15 -05:00
Brown
1df03b0ff2 Fix #2724 - make sure behaviour is not dependent on array type 2020-01-31 16:46:05 -05:00
Brown
66227f9b7f Fix #2727 - callable arg checks should obey ignore_falsable_return 2020-01-31 13:58:56 -05:00
Brown
b46f219c51 Do better inference for array_map return type 2020-01-30 17:43:13 -05:00
Brown
9405314222 Always Be Cloning 2020-01-30 17:22:40 -05:00
Brown
216d9256a1 Allow templated array_map callable inference
Fixes #2719
2020-01-30 17:13:46 -05:00
Matthew Brown
5eb2ebc508 Add more type-system protections for bad array args 2020-01-29 23:41:17 -05:00
Matthew Brown
933dff9e20 Fix #2712 - allow __toString to have more specific type 2020-01-29 22:28:40 -05:00
Matthew Brown
2aebc522f1 Fix #2705 - mark by-ref args as used if not variables already 2020-01-29 21:46:30 -05:00
Matthew Brown
5c3ec7a531 Fix #2696 - make sure static property references are prevented in pure functions 2020-01-27 22:55:20 -05:00
Brown
c3a989f6a8 Fix bad var 2020-01-24 15:44:18 -05:00
Brown
c09f97ed6e Fix #2691 - allow list to be a callable maybe 2020-01-24 15:09:06 -05:00
Brown
38e9e8ba87 Register methods as used 2020-01-24 14:53:32 -05:00
Brown
548c9f7e65 Remove unused var 2020-01-24 14:09:25 -05:00
Brown
9f077f5aec Fix formatting 2020-01-24 14:08:01 -05:00
Brown
faf6afdce8 Support call_user_func evaluation
Fixes #726
2020-01-24 13:34:50 -05:00
Brown
34d73e7243 Fix #2685 - always evaluate $a++ in unknown call 2020-01-24 10:32:28 -05:00
Brown
0ffb833bf3 Fix #2677 - use better assertion for null coalesce 2020-01-23 14:52:35 -05:00
Brown
da43b8188f Fix #2632 - detect invalid by-ref assignments in pure functions 2020-01-23 14:21:34 -05:00
Brown
0ac20e76c4 Fix #2631 - evaluate purity of uasort closure 2020-01-23 13:49:15 -05:00
Brown
36f5c51f01 Allow unpacking of list args with known elements 2020-01-21 10:13:37 -05:00
Matthew Brown
b582c49f51 Fix #2645 - add workarounds for some edgecases 2020-01-17 10:25:05 -05:00
Matthew Brown
471d7610f0 Fix #2644 - improve type inference of autoloaded constants 2020-01-17 09:52:43 -05:00
Matthew Brown
4a03c4aedd Fix impossible isset checks 2020-01-14 21:54:02 -05:00
Matthew Brown
c3edbdbc19 Allow checking $_SESSION for null without altering type 2020-01-14 21:51:04 -05:00
Brown
0f6b61d62d Clone isset type before contradicting 2020-01-14 18:28:32 -05:00
Brown
3fd70a9c88 Only set if non-null 2020-01-14 17:03:58 -05:00
Brown
adc658901a Improve inference of constant() calls 2020-01-14 16:56:09 -05:00
Matthew Brown
42073a800a Remove unevaluated code 2020-01-14 00:55:56 -05:00
Matthew Brown
e1daf26202 Improve support for null coalesce checks 2020-01-14 00:53:38 -05:00
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
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
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
Matthew Brown
37810b5a44 Fix #2552 - add parse error when encountering empty array values 2020-01-04 16:33:02 -05:00
Matthew Brown
9fa2db1b6c Move Union::getTypes to Union::getAtomicTypes 2020-01-04 12:20:26 -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
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
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
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
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
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
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
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
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