Brown
b3cf9d3958
Catch circular references in constants
...
Fixes #2453
2019-12-10 16:16:44 -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
83b10bb9af
Fix #2426 , or at least some of it
2019-12-08 00:49:34 -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
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
Brown
f97a8f0d5b
Use more accurate way to determine list size
2019-11-26 16:34:19 -05:00
Brown
0bcb7863f3
Use better system for storing inferred types and assertions
2019-11-25 11:44:54 -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
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
Brown
06b64a4a01
Detect erroneous use of empty check on bools
2019-11-06 16:14:46 -05:00
Matthew Brown
5910a362ea
Improve report output of taint analysis
2019-10-19 17:59:10 -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
03c39cbe7c
Fix #2223 - make sure lists are handled in more places
2019-10-10 20:16:43 -04:00
Brown
b75720c32b
Add more list types
2019-10-09 10:04:34 -04:00
Brown
2d4a7fbe3e
Fix array fetch analysis offset
2019-10-08 19:01:00 -04:00
Brown
16c33d1565
Add support for list type
...
Fixes #2209
2019-10-08 18:44:46 -04:00
Brown
b0aaede9e1
Add support for checking integer array offsets
2019-10-04 11:08:08 -04:00
Matthew Brown
d85fbaec09
Add stricter checks after first isset
2019-10-03 21:34:56 -04:00
Brown
d225374d6d
Fix #2156 - do better inference after isset
2019-10-01 19:31:08 -04:00
Brown
a81c3067ad
Store the whole type
2019-10-01 17:09:32 -04:00
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
Matthew Brown
ed4ed957c8
Use more specific templated argument
2019-02-07 15:21:34 -05:00
Matthew Brown
509709d6bc
Fix #1267 - flesh out self static property types
2019-02-01 08:59:01 -05:00
Brown
fd88f00526
Fix a few small bugs
2019-01-31 17:48:48 -05:00
Brown
2054e3753f
Fix #1260 - improve handling of ArrayAccess assignment
2019-01-31 12:45:47 -05:00
Brown
c195e8fd21
Add more nuanced analysis of array access fetch
2019-01-30 15:40:37 -05:00
Brown
c9e1df510e
Fix #1241 - allow negative string offsets on a string
2019-01-25 10:23:50 -05:00
Brown
8a97e32e16
Add code to make handling interfaces with magic get/set
...
Ref #1228
2019-01-23 16:58:50 -05:00
Matthew Brown
681391f970
Fix #1220 - improve constant resolution
2019-01-20 09:52:26 -05:00
Matthew Brown
394d6509c6
Restrict class-string types to named objects (and intersections)
2019-01-19 22:46:06 -05:00
Matthew Brown
545c7e3cba
Fix #1211 - allow docblocks to override foreach type earlier
2019-01-19 11:31:51 -05:00
Matthew Brown
94af3b6c51
Add automatic inheritance to properties
...
Fixes #1210
2019-01-19 10:09:26 -05:00
Matthew Brown
4ec7903e8b
Fix #390 - add support for object{foo:int, bar:string} annotation
2019-01-18 00:56:24 -05:00
Matthew Brown
0cca0d76cb
Fix #813 - allow constant array to be refined with isset
2019-01-13 11:54:39 -05:00
Brown
1fddc19172
Add initial support for property types
2019-01-11 17:21:50 -05:00
Brown
43bbd739a2
Fix generic param fetches
2019-01-08 16:55:53 -05:00
Matthew Brown
8024b4e275
Add support for $a::class
2019-01-05 15:12:42 -05:00
Matthew Brown
9d8c2792e2
Add array-key type and improve general type handling
...
Fixes #1144
2019-01-05 00:15:53 -05:00
Matthew Brown
87052537cf
Fix #1167 - don’t worry about AbstractInstantiation when it could be a descendant
2019-01-04 12:28:00 -05:00
Matthew Brown
c3a1e77a53
Fix errors in doctrine/dbal
2018-12-20 01:06:43 -05:00
Brown
699d763cc1
Make isset($a[foo]) imply $a is not a string
2018-12-14 18:52:29 -05:00
Brown
b7d4db892c
Fix #1130 - improve handling of invalid array offsets
2018-12-14 15:10:10 -05:00
Matthew Brown
a8851ff425
Improve handling of T::class when mixed is passed
2018-12-13 01:54:15 -05:00
Matthew Brown
fd0ab47b80
Fix #1118 - detect possible issues with unions of mixed
2018-12-08 13:18:55 -05:00
Matthew Brown
b7710f7cb9
Fix #1107 - be more lenient with possibly undefined array access when suppressed
2018-12-05 22:35:08 -05:00
Matthew Brown
b32000fa05
Fix #689 - add checks for @internal annotations
2018-12-01 18:37:49 -05:00
Brown
04b3fd2bb5
Fall through after more Possibly* issues
2018-11-28 11:45:54 -05:00
Matthew Brown
d90cff8f10
Add support for overriding method visibility too
2018-11-25 11:11:33 -05:00
Matthew Brown
047b096227
Add better support for intersection properties and mocks
2018-11-24 18:31:08 -05:00
Matthew Brown
116cbfd349
Fix #1090 - re-fix support for magic get properties
2018-11-21 16:57:54 -05:00
Matthew Brown
9709263b8d
Make many PropertyAnalyzer properties private
2018-11-12 11:20:59 -05:00
Matthew Brown
4d79b61e93
Change _checker to _analyzer
2018-11-12 11:20:59 -05:00
Matthew Brown
4688b25fd9
Move internal classes to own namespace
2018-11-12 11:20:59 -05:00