Brown
|
92239add4d
|
Add some backwards-incompatible changes for 4.x
|
2020-08-30 11:44:14 -04:00 |
|
Brown
|
c13b0efd49
|
Improve understanding of negated count queries
|
2020-08-30 11:32:01 -04:00 |
|
Brown
|
5f5ce6eb32
|
Fix typo
|
2020-08-26 18:16:12 -04:00 |
|
Brown
|
e64d45b644
|
Fix #4061 - allow indirect null comparison check
|
2020-08-26 17:58:01 -04:00 |
|
Brown
|
42c3a703b5
|
Fix #3741 - detect scalar class constants in if-true assertions
|
2020-08-12 17:03:41 -04:00 |
|
Brown
|
a8c0d81dc1
|
Prevent bool > 1 in strict mode
|
2020-07-30 11:25:47 -04:00 |
|
Brown
|
6949a34ded
|
Put RedundantIdentityWithTrue behind a flag cc @greg0ire
|
2020-07-30 10:25:59 -04:00 |
|
Brown
|
d9d5fdd6c9
|
Add more rules around positive ints
|
2020-07-26 18:29:17 -04:00 |
|
Grégoire Paris
|
2f673fbbd7
|
Detect redundant identity with true (#3893)
Using === true on a known boolean results in the same boolean.
|
2020-07-25 17:27:45 -04:00 |
|
Brown
|
76bd5b6278
|
Refactor type comparison
|
2020-07-21 19:40:35 -04:00 |
|
Brown
|
ae89a71c84
|
Prevent false-positive comparing template to true
|
2020-07-21 12:59:50 -04:00 |
|
Brown
|
f0a5463834
|
Catch string subtypes that cannot be identical
|
2020-07-14 10:08:31 -04:00 |
|
Brown
|
2399643472
|
Fix #3811 - allow more complex negations inside boolean expressions
|
2020-07-13 21:31:58 -04:00 |
|
Brown
|
8d022307d2
|
Fix #3797 - prevent many chained assignments crashing Psalm
|
2020-07-10 16:49:45 -04:00 |
|
Brown
|
6419788a49
|
Remove false from template param as necessary
Fixes #3737
|
2020-07-03 01:07:50 -04:00 |
|
Brown
|
7a7cd91c24
|
Fix #3631 - better treatment for assignments in complex conditionals
|
2020-06-24 13:16:52 -04:00 |
|
Brown
|
4d6fc4d0ca
|
Fix get_class($foo) === static::class checks
|
2020-06-23 13:11:19 -04:00 |
|
Brown
|
1f86afece7
|
Revert "Fix #3631 - apply assertions to RHS of equality in conditional"
This reverts commit 9c17795545 .
|
2020-06-22 20:01:27 -04:00 |
|
Brown
|
9c17795545
|
Fix #3631 - apply assertions to RHS of equality in conditional
|
2020-06-22 15:16:16 -04:00 |
|
Brown
|
137647a1a0
|
Fix #3603 - better typed value comparisons for loose equality
|
2020-06-18 09:31:38 -04:00 |
|
Brown
|
45ea5d0bfe
|
Add a couple more shortcuts for common pattern
Fixes #3563
|
2020-06-12 11:18:34 -04:00 |
|
Brown
|
9b413cfccc
|
Improved understanding of array_key_exists
Fixes #3463
|
2020-05-27 09:03:36 -04:00 |
|
Brown
|
5ee1487a01
|
Make ExpressionAnalyzer more beautiful
|
2020-05-18 15:13:27 -04:00 |
|
Brown
|
21798efed2
|
Fix #3388 - eliminate null after < 0 check
|
2020-05-18 08:52:44 -04:00 |
|
Matthew Brown
|
4dd0a2b775
|
Fix #3380 - allow comparisons between template param and empty array
|
2020-05-16 16:41:07 -04:00 |
|
Nobu Funaki
|
abef8008bc
|
Fix InvalidCast after is_callable([$val, '__toString']) check (#3372)
Support is_callable() with an array argument similar to method_exists()
|
2020-05-16 08:50:43 -04:00 |
|
Brown
|
8ab5a0f504
|
Probably safe to un-negate a class string assertion without autoloader
|
2020-04-30 12:48:21 -04:00 |
|
Brown
|
bb46c30e38
|
Fix #3191 - don’t generate complex assertion from class-string
|
2020-04-19 12:53:50 -04:00 |
|
Brown
|
672baea6fc
|
Fix #3116 - allow class to be compared to a templated class-string
|
2020-04-10 00:26:11 -04:00 |
|
Brown
|
971ae50bea
|
Do prep work for #3024 - improve handling of absent class references
|
2020-03-26 12:35:27 -04:00 |
|
Brown
|
467da32f84
|
Fix instanceof static and isa (static::class) handling
|
2020-03-24 18:58:15 -04:00 |
|
Matthew Brown
|
bfb919d26a
|
Break out methods into their own classes
|
2020-03-11 23:04:52 -04:00 |
|
Matthew Brown
|
952045e2ba
|
Fix return type checks
|
2020-02-22 11:28:24 -05:00 |
|
Matthew Brown
|
1a3129b0e0
|
Fix test condition
|
2020-02-22 10:53:30 -05:00 |
|
Matthew Brown
|
1c218c020e
|
Fix #1684 - detect error in assertion on return type of direct call
|
2020-02-22 10:41:57 -05:00 |
|
Matthew Brown
|
653353709a
|
Use MethodIdentifier object instead of string
|
2020-02-14 20:54:26 -05:00 |
|
Brown
|
f141f7c526
|
Improve --diff checks by including trait-using classes in dependents
|
2020-02-11 16:39:33 -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
|
b582c49f51
|
Fix #2645 - add workarounds for some edgecases
|
2020-01-17 10:25:05 -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 |
|
Brown
|
2c7197ab4b
|
Fix #2578 - improve inference of functions beginning with assert
|
2020-01-09 15:45:17 -05:00 |
|
Brown
|
8e786a17dd
|
Deal with a reconciled var more accurately
Ref #2426
|
2020-01-06 11:09:07 -05:00 |
|
Matthew Brown
|
9fa2db1b6c
|
Move Union::getTypes to Union::getAtomicTypes
|
2020-01-04 12:20:26 -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 |
|
Brown
|
05783eb616
|
Find issues with impossible property values
|
2019-12-11 17:08:02 -05:00 |
|
Matthew Brown
|
c9f43782fd
|
Fix mixed method issues after defining new type
|
2019-12-08 10:17:40 -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 |
|
Brown
|
0b0534d41b
|
Add more list annotations to Psalm’s codebase
|
2019-10-09 09:17:43 -04:00 |
|
Brown
|
f8f8b633b1
|
Suppress a bunch of PossiblyUndefinedArrayOffset issues
|
2019-10-01 15:44:43 -04:00 |
|
Brown
|
f6b0de08f8
|
Remove unnecessary assertion
|
2019-09-19 15:41:44 -04:00 |
|
Brown
|
e6f90ab83f
|
Fix #2146 - check count args length
|
2019-09-19 15:07:49 -04:00 |
|
Brown
|
43041836dd
|
Fix #2026 - add support for calling __toString implicitly after method_exists
|
2019-08-16 11:33:58 -04:00 |
|
Matthew Brown
|
3f78082720
|
Fix is_string call
|
2019-08-10 09:16:32 -04:00 |
|
Matthew Brown
|
460120ec45
|
Fix #1994 - make assert-if-true work for $this properties
|
2019-08-10 09:12:02 -04:00 |
|
Matthew Brown
|
5a4a133f50
|
Fix #1970 - allow comparison to templated param class
|
2019-07-24 22:13:51 -04:00 |
|
Matthew Brown
|
5c4ac97546
|
Fix #1915 - allow @psalm-assert-if-true to operate on $this
|
2019-07-07 15:06:03 -04:00 |
|
Matthew Brown
|
cd33430616
|
Fix #1885 - allow comparison to templated class string
|
2019-07-05 22:57:38 -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 |
|
Matthew Brown
|
d845cdf0c5
|
Fix #1458 by making instanceof static same as === static
|
2019-06-20 08:37:57 -04:00 |
|
Brown
|
c81a9a8737
|
Fix #1742 - allow is_countable assertion to mean something
|
2019-06-07 15:49:10 -04:00 |
|
Matthew Brown
|
4002504ff0
|
Allow trait_exists to inform type for ReflectionClass
|
2019-05-31 09:43:46 -04:00 |
|
Matthew Brown
|
4f48c6388d
|
Fix #1700 - interpret false===($a || $b) correctly
|
2019-05-29 07:47:31 -04:00 |
|
Brown
|
602bae3bb3
|
Allow class_exists(..., false) to inform class-string type
|
2019-05-28 13:16:09 -04:00 |
|
Matthew Brown
|
69150d503a
|
Fix #1682 - correct arg check
|
2019-05-26 16:26:47 -04:00 |
|
Matthew Brown
|
8b9de8bba6
|
class_esists check with false arg shouldn’t count
Fixes #1682
|
2019-05-26 13:16:44 -04:00 |
|
Brown
|
83fe545c94
|
Fix docblock
|
2019-05-22 18:09:36 -04:00 |
|
Brown
|
f728d797cf
|
Fix #1665 - allow -if-true & -if-false assertions on static methods
|
2019-05-22 17:49:38 -04:00 |
|
Matthew Brown
|
ea930b8875
|
Fix interface_exists after class_exists check
|
2019-05-20 20:57:59 -04:00 |
|
Matthew Brown
|
1e853800a3
|
Fix #1657 - allow interface_exists to generate class-string assertion
|
2019-05-19 15:56:04 -04:00 |
|
Matthew Brown
|
ae531506de
|
Fix #1591 - allow variable typed to string to be compared to literal in reverse order
|
2019-05-02 00:50:35 -04:00 |
|
Tyson Andre
|
dbcedd300b
|
Fix error messages for $boolVar !== null
Seen for this example:
$b = rand() % 2 > 0;
if ($b !== null) { ... }
|
2019-04-26 00:19:46 -04:00 |
|
Brown
|
b6d0ee0777
|
Prevent impossible === false comparison
|
2019-04-12 10:30:56 -04:00 |
|
Matthew Brown
|
39af691d2f
|
Fix #1546 - catch impossible assertions to true
|
2019-04-12 09:38:56 -04:00 |
|
Brown
|
7f8b47c5cf
|
Fix buggy behaviour around callable tests
|
2019-04-09 18:09:57 -04:00 |
|
Matthew Brown
|
63a0e768b3
|
Improve type coverage in both good and bad ways
|
2019-03-25 22:30:40 -04:00 |
|
Brown
|
ab6ca4dc35
|
Fix #1491 - allow comparison to typed value
|
2019-03-21 17:26:10 -04:00 |
|
Matthew Brown
|
01d6caf6a2
|
Catch negated instanceof bugs
|
2019-03-16 12:34:48 -04:00 |
|
Matthew Brown
|
4757c2fe8e
|
Fix messaging
|
2019-03-02 15:19:59 -05:00 |
|
Matthew Brown
|
5e61f198e1
|
Fix #1419 - allow checks against empty arrays
|
2019-03-02 15:18:29 -05:00 |
|
Matthew Brown
|
8650f9eb1a
|
Fix #1356 - improve assertion system to work better on function calls
|
2019-02-26 01:03:33 -05:00 |
|
Brown
|
653555a8cc
|
Remove unused var
|
2019-02-21 17:49:33 -05:00 |
|
Brown
|
41b133178a
|
Improve handling of count comparisons
|
2019-02-21 17:17:10 -05:00 |
|
Matthew Brown
|
be06393b9c
|
Fix #1251 - allow instanceof comparisons to class strings
|
2019-01-27 14:10:33 -05:00 |
|
Matthew Brown
|
3ca5ec9281
|
Fix templated class conversion allowing child class
|
2019-01-13 14:40:21 -05:00 |
|
Matthew Brown
|
01e41951e7
|
Support backslash in is_a/is_subclass_of string name
|
2019-01-09 08:42:27 -05:00 |
|
Matthew Brown
|
4d6031b39b
|
Fix #1172 - treat is_subclass_of similarly to is_a
|
2019-01-05 16:58:34 -05:00 |
|
Matthew Brown
|
c7723df8ff
|
Allow gettype vars to be compared to strings
|
2019-01-05 16:23:18 -05:00 |
|
Brown
|
69d9fd7e28
|
Fix regression when reasoning about class strings
|
2019-01-02 11:35:49 -05:00 |
|
Matthew Brown
|
6fbf395f70
|
Fix #1152 - don’t complain about trait class-string comparisons
|
2019-01-01 21:00:34 -05:00 |
|
Brown
|
fb848d62e9
|
Add checks for if (count($a)) and if (count($a) [operator] [number])
|
2018-12-19 16:15:19 -05:00 |
|
Matthew Brown
|
ea89a6ba29
|
Revert "First pass"
This reverts commit 9ed047234f .
|
2018-12-19 08:45:14 -05:00 |
|
Matthew Brown
|
9ed047234f
|
First pass
|
2018-12-19 01:59:14 -05:00 |
|
Matthew Brown
|
fd0ab47b80
|
Fix #1118 - detect possible issues with unions of mixed
|
2018-12-08 13:18:55 -05:00 |
|
Matthew Brown
|
f54a50ec7d
|
Fix #1116 - provide slightly clearer message when comparing a class string to a string
|
2018-12-05 22:29:06 -05:00 |
|
Matthew Brown
|
b32000fa05
|
Fix #689 - add checks for @internal annotations
|
2018-12-01 18:37:49 -05:00 |
|
Matthew Brown
|
47f5f309ad
|
Remove support for get_class($a) === "somestring"
But it works with class constants
|
2018-11-28 23:59:43 -05:00 |
|
Brown
|
425b6321aa
|
Add better understanding of when floats and ints can be equal
|
2018-11-16 11:04:45 -05:00 |
|