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

182 Commits

Author SHA1 Message Date
Matthew Brown
f8a2eae0e2 Fix #2186 - use expanded class name for aliased class 2019-09-30 22:15:48 -04:00
Brown
2c9a082b3e Fix #2172 - only complain about missing offset if it’s really missing 2019-09-25 19:02:49 -04:00
Brown
648dda67ed Fix Psalm issues 2019-09-25 13:12:29 -04:00
Brown
1a48be8e9c Fix #2165 - coerce null array offset to zero 2019-09-25 12:17:37 -04:00
Brown
c68dcf2f74 Don’t coerce false to null when coming from ignore-false type 2019-09-20 15:30:29 -04:00
Brown
be4894c8e0 Fix #2155 - coerce false to 0, true to 1 in array offset 2019-09-20 15:21:38 -04:00
Matthew Brown
9ad6c36d9b
Conditionally verify that array offsets exist (#2147)
* Check array offsets idea

* Clean up some issues

* Add a few light fixes

* Add docs
2019-09-18 14:21:06 -04:00
Matthew Brown
0b4981f01b Fix #1551 - do better at inferring class constant types 2019-09-14 14:26:31 -04:00
Matthew Brown
d941294a84 Move class const analysis 2019-09-14 13:12:54 -04:00
Matthew Brown
d27935d109 Improve accuracy around array addition 2019-09-08 10:23:12 -04:00
Brown
aba3659311 Add more specific key coercion rules when assigning to arrays 2019-08-27 15:12:25 -04:00
Brown
4db8ca6a1d Cleanup extra issues from recent fixes 2019-08-27 14:16:34 -04:00
Brown
3b865f6509 Fix #2048 - allow mixed array to be assigned specific string keys 2019-08-27 10:18:58 -04:00
Brown
fef61e996e Propagate possibly-null issues onto fetched properties 2019-08-23 13:27:38 -04:00
Matthew Brown
1b983babd0 Allow unset of potentially invalid array key type 2019-08-18 18:06:41 -04:00
Matthew Brown
62dff200d5 Fix redundant condition 2019-08-17 18:02:38 -04:00
Matthew Brown
b6dc8f547e Fix #2031 - still get class const return type after defined check 2019-08-17 18:01:24 -04:00
Brown
538abbc54c Fix #2020 - allow static::CONST_NAME to have non-mixed type in final class 2019-08-15 10:41:30 -04:00
Matthew Brown
600999a3a8 Add better typing 2019-08-14 00:47:57 -04:00
Brown
c3949e3194 Improve taint protection for exec-related commands 2019-08-13 19:18:50 -04:00
Matthew Brown
d5b026839c Add support for different taint types ref #1990 2019-08-12 23:16:05 -04:00
Brown
37d93141c4 Only register taints on known magic properties 2019-08-06 13:05:34 -04:00
Brown
0dc6b74fb4 Add taintedness to magic property fetches 2019-08-06 12:54:12 -04:00
Matthew Brown
8f6d432dd0 Add support for magic property comprehension 2019-08-05 23:19:22 -04:00
Matthew Brown
b2c0993cdc Add framework for taint analysis to Psalm
Ref #611
2019-08-04 10:37:36 -04:00
Matthew Brown
1ae9ea5fed Use object instead of by-ref params 2019-07-10 01:35:57 -04:00
Matthew Brown
d0f6f85dba Fix #1899 - detect dead code after array assignment 2019-07-04 16:38:31 -04:00
Brown
5c76b3c82d Fix #1888 - add go-to-variable 2019-07-01 18:48:33 -04:00
Matthew Brown
f5809ec24a Only add node references to explicit locations 2019-07-01 11:12:12 -04:00
Brown
62c37a84f2 Fix tokenising bug found while analysing Phan cc @TysonAndre 2019-06-28 12:29:39 -04:00
Brown
6b32565a9b Allow references to deprecated class inside the class 2019-06-27 13:36:39 -04:00
LeSuisse
f29826b958 Fully qualify constants and function calls (#1849)
This should give a small performance boost.
Part of #1837.

The change is enforced via phpcs and can be autofixed
with phpcbf.
2019-06-26 16:52:29 -04:00
Brown
5ed49c0c03 Fixed #1848 - allow static class strings to be compared 2019-06-26 15:11:16 -04:00
Matthew Brown
31c8a2e4d7 Add offsets to type tokenisation
Ref #1832
2019-06-22 23:30:40 -04:00
Brown
bdf54ae1fa Fix #1814 - warn about deprected ::class access 2019-06-19 12:42:51 -04:00
Brown
10613192c9 Fix #1803 - complain about DeprecatedClass when using its constants 2019-06-18 16:21:04 -04:00
Matthew Brown
f46ccf0a5d Strip text from end of @psalm-type 2019-06-16 12:39:07 -04:00
Matthew Brown
06e913e37b Fix #1791 - complain about missing class constants 2019-06-15 12:19:26 -04:00
Matthew Brown
b0678bdc74 Improve treatment of key-of
Ref #1698
2019-06-07 21:27:50 -04:00
Matthew Brown
0287adfd44 Fix const replacements when moving classes 2019-06-06 07:05:30 -04:00
Brown
3e15fa8bfe Fix bad namespacing 2019-06-05 11:15:52 -04:00
Brown
f309c755f8 Add ability to move classes 2019-06-05 08:50:24 -04:00
Brown
c7f35c263c Fix #1737 properly 2019-06-04 14:08:49 -04:00
Brown
67c9851b95 Fix Psalm bug, and add test to capture it 2019-06-04 13:43:11 -04:00
Brown
778b95d335 Add support for moving class constants 2019-06-04 11:14:49 -04:00
Matthew Brown
a9809ab28a Add property moving & renaming 2019-06-04 00:32:19 -04:00
Matthew Brown
2439a9f6a0 Allow instance method renaming, too 2019-06-02 12:02:39 -04:00
Matthew Brown
7e4de611bf Migrate class references in static calls 2019-06-01 10:07:45 -04:00
Matthew Brown
a252fb84da Fix namespaced method moving 2019-06-01 01:33:21 -04:00
Matthew Brown
cc89b9254d Add initial ideas for moving static methods
Ref #1595
2019-06-01 00:56:54 -04:00
Matthew Brown
f5e4b9b45f Fix #1713 - don’t crash when a property is unset 2019-05-31 19:49:24 -04:00
Matthew Brown
f961da53b7 Fix typos 2019-05-30 08:53:20 -04:00
Matthew Brown
0555bd9ff6 Prevent InternalMethod at implicit __get 2019-05-30 08:50:50 -04:00
Brown
cf02e9c22c Fix access on matched T[K] 2019-05-27 18:36:34 -04:00
Matthew Brown
5861476765 Don’t remove null after magic property fetch 2019-05-27 09:18:34 -04:00
Matthew Brown
790bc53bfd Fix #1681 - interpret parent annotation properly 2019-05-25 11:51:09 -04:00
Matthew Brown
569d82641d Ignore PossiblyNullReference on synthetic method calls 2019-05-24 14:09:01 -04:00
Matthew Brown
574545e149 Add initial support for key-of<T>
Ref #762
2019-05-23 23:53:48 -04:00
Brown
56daa390fc Allow array access on @template T as array
Ref #1607
2019-05-23 18:06:22 -04:00
Brown
01dcf8f631 Fix erroneous update of existing variables 2019-05-23 18:04:12 -04:00
Brown
6ce5fefa4b Fix #1664 - allow templated __get params 2019-05-23 12:59:09 -04:00
Brown
9a93525d33 Emit undefined docblock class error where appropriate on property fetcthes 2019-05-16 15:07:07 -04:00
Barney Laurance
6fbe2b0837 Extract function NamespaceAnalyzer::nameSpaceRootsMatch 2019-05-14 18:54:16 -04:00
Barney Laurance
14843ed58a psalm-internal - extract function NamespaceAnalyzer::isWithin
Also adjust behaviour so things can be internal to classes, not just to
namespace, and namespace comparision is case insensitive
2019-05-14 18:54:16 -04:00
Barney Laurance
cd673538f1 psalm-internal - refactor - use snake_case not camelCase 2019-05-14 18:54:16 -04:00
Barney Laurance
ce5d307f83 psalm-internal - present fetching internal property from other namespace 2019-05-14 18:54:16 -04:00
Brown
9b75683796 Search better, and avoid fatal error 2019-05-09 19:34:38 -04:00
Matthew Brown
e08944cae0 Allow diff mode with --find-dead-code 2019-04-27 17:38:24 -04:00
Brown
0e4c8ce482 Split apart TypeCoercion issues, allowing more granular issue filtering 2019-04-25 18:02:19 -04:00
Matthew Brown
9be8013633 Add a way to ignore variable method & property calls 2019-04-20 17:49:49 -04:00
Brown
d6de6ca5d5 Prevent removing properties on classes with variable assignment 2019-04-18 14:47:58 -04:00
Brown
80e28d6a4a Add support for unused method & property automated removal 2019-04-17 11:12:18 -04:00
Brown
ff14f671b1 Add hopefully-more-portable method for evaluating method/property usage 2019-04-16 16:07:48 -04:00
Brown
26e2de93c7 Prepare to enable paralellised use of --find-dead-code
References #1548
2019-04-12 18:28:07 -04:00
Brown
8f1dbc072d Allow empty offset sets on arrayaccess objects 2019-04-10 17:25:25 -04:00
Tyson Andre
2e6a2f14ed Fix typos in psalm with codespell's dictionary 2019-03-24 23:01:20 -04:00
Matthew Brown
ee56419fd6 Improve accuracy and durability of mixed counts 2019-03-23 09:50:47 -04:00
bugreportuser
e31cfa503d Allow reconciling superglobal types 2019-03-16 12:49:38 -04:00
Matthew Brown
ab832207a4 Fix #1453 - traits are not valid classes 2019-03-15 22:12:35 -04:00
Brown
85f34f2aca Add defining class and increas string length 2019-03-12 12:58:04 -04:00
bugreportuser
0e9fb04f06 Define globals in more places 2019-03-11 15:53:21 -04:00
Matthew Brown
95b986d2d4 Fix #1367 - allow assertions on mixed arrays to define objectlike type 2019-03-10 23:38:30 -04:00
bugreportuser
b34dbe26e2 Allow setting superglobal types 2019-03-06 15:59:41 -05:00
bugreportuser
056e5a5b1e Allow setting globals in config 2019-03-06 15:59:41 -05:00
Brown
ae69695f89 Prevent tests in PHP 7.1 2019-03-05 18:27:25 -05:00
Matthew Brown
b7320e2778 Remove unnnecessary param 2019-03-03 16:45:35 -05:00
Matthew Brown
fb9e9bea32 Fix const reference in current context 2019-03-03 16:43:24 -05:00
Matthew Brown
472cdf6bea Fix #1379 - allow @param-out to change type 2019-03-03 15:11:09 -05:00
Matthew Brown
82e6876011 Fix #1397 - fix get_class behaviour for new instances 2019-03-02 18:02:11 -05:00
Matthew Brown
317f790bde
New plugin hooks (#1405)
* Add a bunch of new hooks

* Add more integrations

* Add some broken tests

* Add more things

* Fix remaining interfaces

* Suppress proper issue

* UndefinedMethod should not stop analysis

* Add handlers for two custom method return types
2019-03-01 08:57:10 -05:00
Matthew Brown
b310cc07b5 Array access on objects should always be treated as method call 2019-02-26 21:24:30 -05:00
bugreportuser
7f7125f334 Fix crash for empty string array access 2019-02-25 08:26:12 -05:00
Matthew Brown
3ad1abece4 Add generation of json artifacts 2019-02-24 01:33:25 -05:00
Matthew Brown
1c8a573b5f Change TGenericParam to TTemplateParam 2019-02-21 21:40:06 -05:00
Brown
348b8eef1f Fix #1366 - don’t complain about invalid array offset when possibly mixed 2019-02-19 11:42:24 -05:00
Matthew Brown
f49be31aeb Fix #1332 - use the correct identifier for trait property resolution 2019-02-18 16:52:09 -05:00
Matthew Brown
12f1ffca11 Fix issue reconciling mixed vars inside loop 2019-02-18 11:39:05 -05:00
Bruce Weirdan
8408effe57 Dropped unused uses 2019-02-17 13:17:45 -05:00
Brown
50421b297a Don’t report undefined properties when collecting initialisations 2019-02-13 14:04:10 -05:00
Brown
3deea3980d Add checks for unitialized properties
Fixes #1328
2019-02-13 13:32:19 -05:00