Matthew Brown
acc7ee261c
Fix #6066 - introduce more robust system for capturing template constraints ( #6072 )
...
* Fix #6066 - add better system for capturing template constraints
* Fix comment
2021-07-11 12:03:21 -04:00
Matt Brown
f5bc841295
Prevent nested literal coercion
2021-06-09 16:01:45 -04:00
Matthew Brown
d12cf88e83
Add back supported for templated index assignment
2021-06-09 12:55:37 -04:00
Bruce Weirdan
6abce3525a
Enforce use
sort ( #5900 )
2021-06-07 22:55:21 -04:00
Matt Brown
38c452ae58
Add example given in ticket and ensure that works too
2021-05-24 00:09:51 -04:00
Matt Brown
8f333337cb
Fix #5804 - don’t choke on conditional return types when converting to callables
2021-05-23 21:41:07 -04:00
Matt Brown
d1262b0bec
Fix #5799 — improve expansion of templated types
2021-05-23 14:39:59 -04:00
Matt Brown
964c91c502
Fix skipped test
2021-05-20 10:57:25 -04:00
Matt Brown
3a811f1fb5
Fix/suppress failures
2021-05-19 15:30:36 -04:00
Matt Brown
1195335078
Fix #5768 - call methods with proper params
2021-05-14 22:50:11 -04:00
Matt Brown
c4aea7c82c
Fix #5434 - prevent crash with class-string-map
2021-05-14 19:44:11 -04:00
Matthew Brown
18931295c4
Fix #5073 — don’t crash when templates cannot be resolved
2021-05-13 16:55:22 -04:00
Vincent Langlet
587b144f0e
Check for ParamName even for method with only one param ( #5732 )
...
* Check for ParamName even for method with only one param
* Fix tests
2021-05-08 19:33:48 -04:00
Matt Brown
ed43c739e3
Prevent another unsafe template situation, skipping key-of tests for now
2021-05-05 01:06:53 -04:00
Matt Brown
ba90267ea7
Fix bad subtyping rule
2021-05-05 00:42:06 -04:00
Bruce Weirdan
105c6f3a1c
Remove (and prevent) unused uses ( #5704 )
...
* Updates `slevomat/coding-standard`
* Removes unused uses
* Prevents unused uses
* Fixes a number of symbol case mismatches
2021-05-03 17:22:15 -04:00
Matt Brown
012dafad79
Fix #5383 - prevent unsound use of new static for generics
2021-04-10 13:16:19 -04:00
Valentin Udaltsov
31096d9361
Marked iterator_to_array as an impure function ( #5532 )
2021-04-02 15:38:15 -04:00
Matt Brown
17e147935a
Fix #5506 – make array_values and iterator_to_array respect nested templates
2021-03-29 09:37:51 -04:00
Matt Brown
9a714b759e
Fix #5496 - ensure params extended in properties are properly fleshed out
2021-03-28 23:10:38 -04:00
Matt Brown
54ac13b190
Allow nested template unwrapping inside reset
, end
...
Fixes #5208
2021-03-28 09:52:23 -04:00
AndrolGenhald
de5a031088
Improve @no-named-arguments support and variadics. ( #5455 )
...
* Improve @no-named-arguments support and variadics.
Handling of argument unpacking and variadics still needs a pretty big makeover, but this is a good start.
Fixes #5420
Improves #5453 (iterable works, array still causes issues)
* Remove unneeded imports.
2021-03-22 19:58:22 -04:00
AndrolGenhald
d4590711d6
Fix object-like array keys when combining string and automatic keys ( fixes #5427 ). ( #5428 )
...
* Fix object-like array keys (fixes #5427 ).
* Fix incorrect return types for tests.
* Fix false positive list with literal int key.
2021-03-19 21:44:44 -04:00
Matt Brown
04f3e29f94
Expand documentation method return type to ensure we’re giving a fair shot
2021-03-18 11:07:02 -04:00
Bruce Weirdan
841efbdfaf
Make WeakMap generic ( #5313 )
2021-03-02 22:25:19 -05:00
Matt Brown
44f8d71e72
Fix #5290 - improve inference of nested class-string template types
2021-02-27 01:00:05 -05:00
Matt Brown
98eb40c4ca
Improve unwrapping inference in nested templates
...
Ref #5290
2021-02-27 00:22:31 -05:00
Matt Brown
92c12d5a38
Separate out some nested template tests
2021-02-26 16:05:46 -05:00
Matt Brown
474ebf912e
Fix #5229 - new SomeTemplatedClass should expand out params even if none passed
2021-02-25 21:20:05 -05:00
Matt Brown
d4841993b2
Fix #5279 - don’t convert get_class($templated) into dependent type
2021-02-25 18:43:04 -05:00
elnoro
fff32d0443
added test for multiline templates ( #5282 )
2021-02-25 17:42:20 -05:00
Matt Brown
3106635953
Fix inference of conditional types when wildcard constant given
2021-02-20 12:21:52 -05:00
Matt Brown
9d6d3916da
Revert "Prevent TypeParseException when dealing with nested template in assertion"
...
This reverts commit 196f24aac3
.
2021-02-17 09:46:54 -05:00
Matt Brown
686f9fcaaa
Don’t throw an exceptin when parsing invalid type
2021-02-16 20:24:16 -05:00
Matt Brown
196f24aac3
Prevent TypeParseException when dealing with nested template in assertion
2021-02-16 20:06:15 -05:00
Matt Brown
6b53e79505
When there’s an irrecoverqable syntax error invalidate all issues in the file
2021-02-14 21:16:12 -05:00
Matt Brown
8834a54934
Fix #5219 - invalidate cache for changed params
2021-02-14 12:07:15 -05:00
Matt Brown
6fb7423c68
Fix #5211 - prevent infinite loop in template inference
2021-02-13 16:16:58 -05:00
Matt Brown
fa337375ae
Fix #5198 - allow is_array check on templated
2021-02-12 12:32:24 -05:00
Matt Brown
ad0b575080
Better fix for #5180
2021-02-08 23:31:49 -05:00
Matt Brown
9b8fdf154d
Revert "Allow refinement of $this properties based on subclass"
...
This reverts commit 1d5d2403e2
.
2021-02-08 22:50:50 -05:00
Matt Brown
1d5d2403e2
Allow refinement of $this properties based on subclass
...
Fixes #5180
2021-02-08 22:46:32 -05:00
Matt Brown
8b5e0fc754
Fix #5172 - prevent calling function with implicitly-broader type
2021-02-07 11:07:22 -05:00
Matt Brown
0eed186edf
Fix #5140 - always replace closure return types, whether or not a matching input type is present
2021-02-01 21:40:30 -05:00
Matt Brown
c1d868f950
Fix #5127 - delay transformation of base classes based on inheritance until later
2021-01-31 12:33:07 -05:00
Matt Brown
76269658ca
Fix #5107 - treat function-bound templated parameters the same
...
Previously they were treated differently depending on whether or not they were inside a method
2021-01-26 22:43:42 -05:00
Matt Brown
0624098865
Ensure getId() output can always be parsed as a type
...
Ref #5105
2021-01-25 23:41:51 -05:00
81b75a7884
Check iterator types on yield from ( #5042 )
...
* Check iterator types on yield from
* Switch to NodeAbstract
* Make Foo iterable
2021-01-20 17:41:15 -05:00
Matt Brown
2f58c6afc8
Fix #5020 - remove previous catch var assertions when assigning inside catch
2021-01-17 14:28:28 -05:00
Matt Brown
ef0d19ed9f
Fix #5029 - remember staticness of types when combining
2021-01-16 01:12:18 -05:00
Matt Brown
104647745b
Fix #4955 - catch invalid passing class constant where templated class string expected
2021-01-11 00:28:44 -05:00
Matt Brown
e299e914f8
Fix #4958 - honour template as inheritance when comparing template types
2021-01-09 18:58:29 -05:00
Matt Brown
6ef0f2e63e
Fix #4943
...
Prevent input types becoming part of the inferred generic params when a match is found
2021-01-09 18:08:02 -05:00
Matt Brown
603ecadbb7
Fix #4945 - use assertion string for scalar templated assertions
2021-01-07 10:27:35 -05:00
orklah
0e17a3354f
add stubs for standard iterators ( #4725 )
...
* add stubs for standard iterators
* Apply suggestions from code review cc @weirdan
Co-authored-by: Bruce Weirdan <weirdan@gmail.com>
* complete stub + delete code made redundant by stubs + fix some syntax in stubs
* fix parse error
Co-authored-by: Bruce Weirdan <weirdan@gmail.com>
2021-01-07 10:07:07 -05:00
orklah
f9fccb2b2d
implement DTO for plugins ( #4881 )
...
* implement DTO for plugins
* introduce EventHandler + reintroduce legacy API for plugins
2021-01-06 09:05:53 -05:00
Matthew Brown
2898e556e4
Fix test
2020-12-29 16:52:59 +00:00
Matthew Brown
ddd99970a9
Fix #4901 - simplify mapping of template types within class
2020-12-29 12:24:33 +00:00
Matt Brown
fbaaf05f48
Fix psl inheritance stuff cc @azjezz
2020-12-13 16:58:03 -05:00
Matt Brown
37659445f0
Improve accuracy of optional example
2020-12-10 01:12:58 -05:00
Matt Brown
e6dad6e65f
Be smarter when choosing inherited param types
...
Ref #4803
2020-12-10 00:15:37 -05:00
Matt Brown
beefa2aea3
Fix #4817 - allow optional inference
2020-12-09 19:32:56 -05:00
Matt Brown
be3f30ff1d
Fix #4812 - reconcile array assertion on template as type correctly
2020-12-08 14:17:37 -05:00
Matt Brown
1e0bcc1876
Fix #4803 - always derive method params the same way
2020-12-08 11:27:51 -05:00
2e3s
e46c68b1e5
Overwrite memoized return type after sum-type candidate is calculated ( #4805 )
...
* Overwrite memoized return type after sum-type candidate is calculated
* Fix mismatched types
* Fix code style
2020-12-08 09:35:11 -05:00
Matt Brown
91ee4aeca3
Fix #4797 - sanitise assertion output of template result
2020-12-07 19:11:56 -05:00
Matt Brown
cec8d7138f
Fix #4782 - don’t replace closure types with upper bounds when replacing class param types
2020-12-05 11:58:55 -05:00
Matt Brown
fb88145780
Fix #4767 - rescan directly-affected class-interface relationships
2020-12-04 01:19:51 -05:00
Matt Brown
4d81682fdd
Fix #4731 - expand out class-bound generic types when evaluating instance method
2020-11-29 21:36:50 -05:00
Matt Brown
86b6d6a506
Fix #4733 - don’t replace template types when they’re defined on the same class
2020-11-29 19:12:22 -05:00
Matt Brown
601c1d8cd0
Expand out constants in param types earlier
2020-11-29 19:07:35 -05:00
Matt Brown
58b306b6e3
Ensure class template types are mapped to static methods where necessary
...
Ref #4733
2020-11-29 17:40:52 -05:00
Matt Brown
15a5bd5e29
Simplify storage and retrieval of extended template params
2020-11-29 15:05:32 -05:00
Matt Brown
de1fa03f77
Fix template type selection
2020-11-28 09:53:11 -05:00
Matt Brown
0c477da310
Fix test failures
2020-11-25 20:05:09 -05:00
Matt Brown
13b83e6132
Fix #4545 - allow intersections in more places
2020-11-13 09:43:30 -05:00
Matt Brown
2992cc73c2
Split out trait template tests
2020-11-13 08:59:55 -05:00
Matt Brown
3dd185e395
Fix #4537 - use more rigorous inerhitance for return and param types
2020-11-12 13:54:27 -05:00
Matt Brown
b7551e712a
Use better way to determine which signture to use
...
Fixes #4524
2020-11-11 19:22:23 -05:00
Matt Brown
2f7bf2a144
Bind lower bounds to upper bounds as well when no upper bound can be inferred
...
Ref #4485
2020-11-11 17:46:09 -05:00
Matt Brown
a8d7248c31
Fix #4524 - do better template param inheritance
2020-11-11 13:25:17 -05:00
Matt Brown
388e804ed8
Allow opt-in to strict return type checking
2020-11-05 18:20:04 -05:00
Matt Brown
67554dd017
Fix #4453 - sanitise @extends types before attempting to parse
2020-10-30 15:08:23 -04:00
Matt Brown
fce5c26600
Remove subpar test
2020-10-28 13:55:51 -04:00
Matt Brown
d27d86a84c
Fix #4422 - be aware of nested template params
2020-10-27 10:01:17 -04:00
Matt Brown
f3cc7a7f2f
Break apart ReflectorVisitor
2020-10-23 19:53:04 -04:00
Matt Brown
2902a8cc60
Fix #4326 - Prevent later remapping of properties
2020-10-14 21:35:57 -04:00
Matt Brown
4539a2f27e
Fix #4326 - prevent more mapping than necessary
2020-10-14 21:22:51 -04:00
Pol Dellaiera
31c924c314
Add more standard iterators ( #4320 )
...
* Add CachingIterator, LimitIterator, InfiniteIterator, CallbackFilterIterator, NoRewindIterator.
Signed-off-by: Pol Dellaiera <pol.dellaiera@protonmail.com>
* Add related Iterator tests.
Signed-off-by: Pol Dellaiera <pol.dellaiera@protonmail.com>
2020-10-13 11:35:49 -04:00
Matt Brown
fcfa746ba8
Fix #4310 - prevent literal class check on union
2020-10-12 14:45:11 -04:00
Matt Brown
14efde286f
4.x - refactor unused variable detection
...
This turns unused variable detection into an explicit control-flow problem, where before we had a more simplistic mark-and-sweep algorithm
2020-09-30 12:28:13 -04:00
orklah
37a2f8a33d
unused use statements ( #4228 )
2020-09-22 01:10:46 -04:00
Brown
8f8dbfbd72
Fix #4122 - detect yield in function arguments
2020-09-13 17:13:26 -04:00
orklah
ead107fa9e
More return types ( #4173 )
...
* add native return types
* redundant phpdoc
2020-09-12 11:24:05 -04:00
Brown
00ad09816f
Fix tests
2020-09-10 19:05:47 -04:00
Brown
92239add4d
Add some backwards-incompatible changes for 4.x
2020-08-30 11:44:14 -04:00
Brown
9878613594
Refine iterable key after is_array check
...
Ref #4038
2020-08-26 11:00:38 -04:00
Brown
57ac0a3310
Refine test for windows compat
2020-08-25 17:37:37 -04:00
Brown
59e7f69d7b
Fix get_class-inferred templating
2020-08-25 17:25:05 -04:00
Brown
6ab3e732fb
Fix #4038 - don’t remove null types unnecessarily in mixed union
2020-08-25 15:50:33 -04:00
Brown
6e1218065d
Preserve intersections when expanding templated types
...
Fixes #4043
2020-08-25 14:12:57 -04:00
Bruce Weirdan
4dcb7183f5
Fix windows tests ( #4040 )
...
* Fix windows tests by not mangling the expectations
* Use platform-dependent directory separator in expected messages
* fix CS
2020-08-22 10:00:36 -04:00
Matthew Brown
5c20a5295e
Improve solution to #3964
2020-08-16 13:03:30 -04:00
Matthew Brown
a356a43a51
Fix #3964 - prevent incorrect intersection of unions
2020-08-16 12:26:07 -04:00
m0003r
e81593f359
Localize types on magic properties ( #3971 )
...
* Fix #3949 - localize types on magic properties
* fix failing tests
* fix code style
Co-authored-by: m03r <m03r@m03r.net>
2020-08-10 12:45:21 -04:00
Matthew Brown
6085e42fc1
Detect mismatching param names effectively
2020-08-10 09:58:43 -04:00
Brown
afce2dc66f
Tighten up rules around instantiation a bit more
2020-08-06 10:18:55 -04:00
Brown
c0b0036109
Fix #3934 - prevent unsafe use of new static
2020-08-05 19:39:27 -04:00
Brown
1c8f9e94b1
Fix #3907 - allow template as types to be refined via instanceof
2020-07-29 17:46:45 -04:00
Brown
873970a4d1
Recursively transform template types before comparison
...
Fixes #3887
2020-07-24 14:47:24 -04:00
Brown
92fe9898a1
Fix #3879 - ensure interface templates are extended where nececssary
2020-07-24 11:29:36 -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
8349564cc4
Fix #3790 - removing false/null from template not redundant
2020-07-10 13:19:23 -04:00
Brown
ba44b952ba
Skip failing test
2020-07-10 13:08:50 -04:00
Brown
cd8420aa94
Skip optimisation for unpacked args
2020-07-10 13:04:37 -04:00
Brown
8ecee6df6d
Fix #3760 - prevent param remapping twice
2020-07-07 11:44:22 -04:00
Brown
ab6df0a5d1
Fix #3753 - resolve self-references in trait as statements earlier
2020-07-05 12:05:25 -04:00
Brown
5da29955ee
Use better replacement when analysing potentially-inherited templated type
2020-07-03 12:25:33 -04:00
Brown
6419788a49
Remove false from template param as necessary
...
Fixes #3737
2020-07-03 01:07:50 -04:00
Brown
ea82cdc6ea
Fix #3726 - infer generic template from class-string
2020-07-02 01:11:46 -04:00
Brown
fa0f43f0cf
Skip failing test
2020-07-02 00:22:14 -04:00
Brown
ae7c5b095b
Fix #3712 - allow taints to be suppressed with @psalm-suppress
2020-07-01 23:23:45 -04:00
Brown
137647a1a0
Fix #3603 - better typed value comparisons for loose equality
2020-06-18 09:31:38 -04:00
Brown
0a8b9b56ab
Fix #3600 - conditional return should be removed before comparison
2020-06-17 12:57:50 -04:00
Matthew Brown
427f470806
Fix #3586 - ensure templated trait params more accurate
2020-06-13 16:37:39 -04:00
Matthew Brown
74a34f066c
Don’t check classes if literal strings are allowed
...
Fixes #3538
2020-06-06 19:31:42 -04:00
Brown
fcf0a681d9
Fix #3531 - ignore mixed returns from template
2020-06-06 10:33:49 -04:00
Brown
be8fd3ea19
Fix #3481 - treat an iterable like a Traversable when comparing to object
2020-05-31 01:22:43 -04:00
Brown
4e21e54ee1
Fix #3491 - provide correct types for substitution
2020-05-30 19:11:41 -04:00
Brown
3da3d61270
Fix #3434 by removing extraneous call to simplifyType
2020-05-26 17:55:54 -04:00
Brown
043c4b2a98
Skip test that requires ext-ds
2020-05-25 18:47:59 -04:00
Brown
7e7456c863
Make taint checks more thorough
2020-05-25 17:10:53 -04:00
Brown
109920be88
Expand template param before comparison
2020-05-25 11:51:10 -04:00
Brown
be847472a2
Fix #3453 - allow conditional return types on instance methods
2020-05-25 09:39:30 -04:00
Matthew Brown
4f33330215
Add nullable type
2020-05-22 13:18:18 -04:00
Brown
bebfac0ab6
Fix #3426 - allow falsy reconciliation for templated params
2020-05-22 13:16:48 -04:00
Brown
1b84fc2c12
Fix #3419 - don’t add null to return type when template/conditional return is used
2020-05-22 12:44:19 -04:00
Matthew Brown
6784a90b2f
Fix #3423 - allow conditional with func_num_args() in namespace
2020-05-21 11:29:54 -04:00
Matthew Brown
952216ff21
Fix test
2020-05-20 23:24:50 -04:00
Matthew Brown
2d02064962
Fix #3407 - allow multiple matching generic classes in union
2020-05-20 09:11:17 -04:00
Brown
f335560b69
Allow setting property on templated type
2020-05-19 17:31:05 -04:00
Matthew Brown
4dd0a2b775
Fix #3380 - allow comparisons between template param and empty array
2020-05-16 16:41:07 -04:00
Matthew Brown
8c236f411a
Fix #3353 - allow extending nested when nested as type is mixed
2020-05-12 15:07:16 -04:00
Brown
3e16aec33c
Remap generic template params where necessary
...
Fixes #3325
2020-05-08 22:55:18 -04:00
Brown
a089d8bd58
Fix #3296 - propagate final flag to static calls in return types
2020-05-03 20:42:06 -04:00
Brown
bf5e178d16
Fix #3289 - treat property on non-generic type like actual value
2020-05-02 23:37:59 -04:00
Brown
07e5250292
Fix #3273 - add support for func_num_args() in conditional type
2020-05-01 16:02:53 -04:00
Brown
0d8b56dc78
Fix return type coalescing for conditional return types
2020-05-01 13:04:48 -04:00
Brown
6024447ca0
Expand function-based template types before comparing against inherited
...
Fixes #3276
2020-05-01 12:40:10 -04:00