Adrien LUCAS
4cb8e86737
Add a proxy
capability to the flow annotation ( #4495 )
...
* Add a `passthru` capability to the flow annotation
* Fix passthru-calls type
* Fix types and rename to proxy
* Allow to proxy a method
Co-authored-by: Matthew Brown <github@muglug.com>
2020-11-09 15:22:35 -05:00
Matt Brown
32d526bde9
Add descendant variables for closure uses
...
Fixes #4522
2020-11-09 15:20:28 -05:00
Matt Brown
e97a9c86eb
Fix #4517 - track type contradiction issues in match expressions
2020-11-09 10:00:53 -05:00
Matt Brown
3aaa1d8447
Fix #4516 - treat exit() as the empty type
2020-11-09 08:44:03 -05:00
Matt Brown
683546e024
Fix #4519 - prevent crash with empty match
2020-11-09 08:36:59 -05:00
Matt Brown
8799e1a337
Break apart complex method
2020-11-09 00:58:45 -05:00
Matt Brown
6acd667e55
Fix #4509 - treat expression-derived constants as mixed
2020-11-08 15:36:38 -05:00
Matt Brown
ab2ab826d2
Add slashes
2020-11-08 14:34:09 -05:00
Matt Brown
0be4f2fedf
Fix/ignore reflection bugs
2020-11-08 14:27:37 -05:00
Wouter J
58318282c5
Add support for PHP 8 union types ( #4505 )
2020-11-08 14:23:03 -05:00
Matt Brown
20e37d8cb6
Add a comment to show workings
2020-11-08 13:08:45 -05:00
Matt Brown
24c9702aa5
Remove unused imports
2020-11-08 12:31:21 -05:00
Matt Brown
6da0905478
Separate out good from the bad
2020-11-08 12:29:23 -05:00
Matt Brown
b635353cf4
Fix redundant thing
2020-11-08 10:18:32 -05:00
Matt Brown
dccf236d16
Fix #4503 - don’t ignore assertions on possibly-null mixed
2020-11-08 10:06:39 -05:00
Matt Brown
b8f5d16e9f
Consolidate similar functionality
2020-11-07 00:58:20 -05:00
Matt Brown
bb5b5142d6
Add more info to mic drop code
2020-11-06 21:36:38 -05:00
Matt Brown
45b3dce631
Break apart IfElseAnalyzer
2020-11-06 21:01:17 -05:00
Matt Brown
3359e7699a
Rename IfAnalyzer
2020-11-06 20:51:14 -05:00
Axel H
271e0d86be
Fix type inference when unpacking typed iterables ( #4487 )
...
* Add test for unpacking typed iterables
* Fix type inference when unpacking typed iterables into arrays
* Fix possibly undefined array offset
2020-11-06 17:24:01 -05:00
Matt Brown
9daa534656
Ensure we flush out re-assigned vars also referenced
...
Fixes #4488
2020-11-06 12:51:41 -05:00
Matt Brown
6b06ecec39
Fix #4491 - support assertions in new calls
2020-11-06 11:55:19 -05:00
Matt Brown
debedf2c96
Support pure-Closure annotation
2020-11-06 00:38:57 -05:00
Matthew Brown
1c66646e72
Fix formatting
2020-11-05 19:23:54 -05:00
Matt Brown
388e804ed8
Allow opt-in to strict return type checking
2020-11-05 18:20:04 -05:00
Matt Brown
d47d817843
Fix #4479 - use correct keys in message
2020-11-05 10:13:08 -05:00
Matt Brown
e9dd16f336
Fix #4481 - ReflectionProperty implements Reflector
2020-11-05 09:29:20 -05:00
Matt Brown
b3ff107c20
Add functions
2020-11-04 23:34:38 -05:00
Matt Brown
3bde327f1b
Break up CommentAnalyzer
2020-11-04 23:25:08 -05:00
Matt Brown
f3c6d70a9b
Use more accurate type for div of ints
2020-11-04 22:39:27 -05:00
Matt Brown
eacc05e73f
Fix #2132 - get value of literal int division
2020-11-04 22:32:33 -05:00
Matt Brown
3e9c5d3600
Add support for @return never
2020-11-04 12:30:02 -05:00
Matt Brown
b5a3f45d52
Remove use of PHP 7.2 function
2020-11-04 11:02:34 -05:00
Matt Brown
590af31449
Improve output of Clause::__toString
2020-11-03 17:02:37 -05:00
Matt Brown
91d9dc3759
Fix overeager inference
2020-11-03 16:44:24 -05:00
Matt Brown
b35db3e523
Reorganise things a little
2020-11-03 16:15:54 -05:00
Matt Brown
16bfbd9224
Fix function
2020-11-02 00:54:12 -05:00
Matt Brown
3d4e77beb6
Fix int-mask-of expansion
2020-11-02 00:40:36 -05:00
Matt Brown
09228131d8
Use falsy value
2020-11-01 22:57:30 -05:00
Matt Brown
6922caf9f6
Fix #4466 use better differentiation for class_exists second param
2020-11-01 13:14:17 -05:00
Matt Brown
966b139504
Fix dupe semicolons
2020-11-01 11:42:09 -05:00
Matt Brown
024d93b7fd
Fix #4467 - variables are only the same if they were set in the same location
2020-11-01 11:26:42 -05:00
Matt Brown
f0a30b9fd0
Invalidate child methods when signature changes
2020-11-01 09:46:21 -05:00
Matt Brown
667220408c
Fix #4464 - bust cache when Psalm’s version changes, not just composer’s
2020-11-01 09:01:53 -05:00
Matt Brown
957a554c4b
Support a bunch of attributes
2020-10-30 21:38:27 -04:00
Matt Brown
938cebc9f8
Use better inference for getAttributes return type
...
Fixes #4367
2020-10-30 17:37:16 -04:00
Matt Brown
67554dd017
Fix #4453 - sanitise @extends types before attempting to parse
2020-10-30 15:08:23 -04:00
Matt Brown
579327a470
Detect when targets are incorrectly targeted
2020-10-30 13:28:45 -04:00
Matt Brown
4ea87b9054
Add support for int-mask<...> and int-mask-of<...>
2020-10-30 13:28:45 -04:00
Joe Hoyle
4bb675ea72
Pass CodeLocation to FunctionParamsProviderInterface interface ( #4444 )
...
Currently the `getFunctionParams()` method of the `FunctionParamsProviderInterface` is never passed the CodeLocation of the analyzed function call. As this is in-scope in the only call site, we can pass the CodeLocation. This means the `getFunctionParams()` is able to issue it's own Issues (which required the code location to attached the Issue to)
2020-10-29 19:53:21 -04:00
Matt Brown
82f35c1454
Ensure Stringable is always available to tests that need it
2020-10-29 19:41:10 -04:00
Matt Brown
5c784dc7cb
Fix #4435 - ensure casts are always flow-sensitive
2020-10-28 14:06:05 -04:00
Matt Brown
dab1aac9d4
Protect more calls
2020-10-28 13:48:13 -04:00
Matt Brown
f43dba8c4c
Use more accurate comparison for non-empty-lists
2020-10-28 13:32:55 -04:00
Matt Brown
083102a862
Fix count call
2020-10-28 13:10:30 -04:00
Matt Brown
4aef96bbac
Use lists everywhere for args
2020-10-28 12:45:26 -04:00
Matt Brown
fee5eab671
If interface implements __toString it’s also Stringable
2020-10-28 09:06:52 -04:00
Matt Brown
d00a02a06b
Fix #4429 - any class with a __toString method in PHP8 assumed to implement Stringable
2020-10-27 15:41:04 -04:00
Matt Brown
d27d86a84c
Fix #4422 - be aware of nested template params
2020-10-27 10:01:17 -04:00
Matt Brown
1da6615ac2
Fix comma
2020-10-27 09:13:57 -04:00
Matt Brown
b91370e4ae
Fix #4407 - always scan types in @var docblocks regardless of next element
2020-10-26 12:35:29 -04:00
Matt Brown
d3464cb22a
Fix #4418 - improve try analysis for mixed, too
2020-10-26 09:05:48 -04:00
Matt Brown
462f8ba32b
Fix #4397 - allow offsetGet on inside isset
2020-10-25 22:16:43 -04:00
Matt Brown
b6dbc34523
Track final-ness of class when evaluating trait returns
2020-10-25 12:20:18 -04:00
Matt Brown
18f3a3721f
Fix #4414 - allow multiple @psalm-assert-if-true on same var
2020-10-25 10:49:39 -04:00
Matt Brown
94e26b2257
Empty checks variables are really falsy checks
2020-10-24 12:46:27 -04:00
Matt Brown
5ff3f1377d
Fix a few bugs
2020-10-24 12:23:59 -04:00
Matt Brown
f8eee22f77
Add basic support for PHP attributes
...
Ref #4367 - supports creation and argument checks
2020-10-24 00:10:22 -04:00
Matt Brown
f3cc7a7f2f
Break apart ReflectorVisitor
2020-10-23 19:53:04 -04:00
Matt Brown
6e262ca753
Add slash
2020-10-22 18:30:36 -04:00
Matt Brown
1c836ad2fb
Invalidate signature types when use changes
2020-10-22 18:07:27 -04:00
Matthew Brown
0f9b4003f8
arraylike-object should include countable
...
Fixes #4398
2020-10-22 11:48:24 -04:00
Matt Brown
ad5a8c247b
Fix #4386 - fix issues with property promotion
2020-10-21 14:41:15 -04:00
Matt Brown
f72e2d7de5
Fix #4374 - prevent paradox and allow Psalm to understand more assignments in conditionals
2020-10-20 14:43:05 -04:00
Matt Brown
66780716aa
Fix #3625 - getIterator call is used inside loop
2020-10-20 10:59:09 -04:00
Matt Brown
e7d1fa6798
Fix #4372 - count implicitly-used short-closure vars as used
2020-10-20 09:32:08 -04:00
Matt Brown
3803bbfce0
Fix #4368 - improve handling of try with finally
2020-10-20 09:07:10 -04:00
Matt Brown
7afd817a3b
Add back use
2020-10-19 15:10:35 -04:00
Niclas van Eyk
0261024aa6
Initial proposal for psalm-require-{extends, implements} ( #4361 )
...
* initial implementation of psalm-require-extends
* Added @psalm-require-implements
* Added shortcode for ExtensionRequirementViolation
* Docs & cofig entries for @pasalm-require-{implements,extends}
* Added requirement violations to issues.md
2020-10-19 15:08:18 -04:00
Matt Brown
32787169d7
Fix language server
2020-10-19 13:13:50 -04:00
Matt Brown
1a6b684993
Fix #4366 - possibly-undefined vars in finally block should not error
2020-10-19 09:56:38 -04:00
Matt Brown
fe294a4dc0
Don’t overwrite true flag
2020-10-18 01:24:36 -04:00
Matt Brown
a6c7336c69
Fix bad replacement
2020-10-18 00:54:07 -04:00
Matt Brown
0897abf5cb
Be more explicit about negation
2020-10-18 00:39:43 -04:00
Matt Brown
3c29ffd0b7
Ignore just-coerced vars
2020-10-17 23:35:24 -04:00
Matt Brown
b646414304
Prevent unnecessary assignments
2020-10-17 18:44:42 -04:00
Matt Brown
055fe551c1
Suppress errors from fake statements
2020-10-17 18:35:55 -04:00
Matt Brown
9502e51a08
Fix reversed negation check
2020-10-17 17:46:00 -04:00
Matt Brown
c0f6afbd87
Improve binary op || analysis for chain
2020-10-17 17:16:47 -04:00
Matt Brown
559abb7b6a
Fix style
2020-10-17 14:50:14 -04:00
orklah
ceaaa39ec3
improve phpdoc ( #4352 )
2020-10-17 12:36:44 -04:00
Matt Brown
9f29e77adc
Fix #4354 - allow assignments on RHS of || in if conditional
2020-10-17 12:29:57 -04:00
Matt Brown
be1cd5275e
Fix #4349 - improve types for suggested unions
2020-10-16 17:56:31 -04:00
Matt Brown
234eae6ad0
Fix algebra more
2020-10-16 11:17:52 -04:00
Matt Brown
083cc29c04
Fix #4347 - fix combinatorial expansion when negating if conditions
2020-10-16 10:23:15 -04:00
orklah
ffe7874906
Misc improvements ( #4314 )
...
* extract the operation out of the loop when possible
* remove unnecessary interfaces when already inherited in parent
* simplify expressions
* avoid using alias functions
* redundant phpdoc
* unused imports
2020-10-15 13:23:35 -04:00
Matt Brown
b69e28f26a
Fix default value
2020-10-15 13:20:42 -04:00
Matt Brown
8d2e88ef41
Fix #4333 - don’t get tripped up on try with no catches
2020-10-15 10:15:55 -04:00
Matt Brown
8a2983e5e9
Fix #4336 - don’t merge sources twice for null coalesce
2020-10-15 09:57:37 -04:00
Matt Brown
da257a0fa5
Break apart InstancePropertyFetchAnalyzer and others
2020-10-15 09:21:44 -04:00