Matthew Brown
43189b3d55
Allow types to be traversed
2020-03-14 23:54:51 -04:00
RJ Garcia
2de3e27f10
Initial inferred Closure Returns ( #2945 )
...
- Added detection for when we can infer
closure types from parent fn return types
- Implemented functionality for infering types of
returned closures
- Added ability to infer type of return from typed
closures
- Added a new getFunctionLikeStorage method in
Codebase to support easily getting a function
despite being a method, closure, or function
- Added some utilities to the MethodIdentifier
to facilitate creating MethodIdentifier's from
string method references
Closes #2896
Signed-off-by: RJ Garcia <rj@bighead.net>
2020-03-14 14:51:43 -04:00
Matthew Brown
acac77b3f0
Improve message
2020-03-14 01:19:50 -04:00
Matthew Brown
0aca01faea
Improve fix to #2805
2020-03-14 01:09:12 -04:00
Matthew Brown
aba29f0cbf
Add slash
2020-03-13 20:28:32 -04:00
Matthew Brown
aaf74f084a
Fix #2954 - filter out used vars before checking params
2020-03-13 20:21:49 -04:00
Matthew Brown
54d38e562f
Fix #2970 - use correct unreferenced vars when analysing do
2020-03-13 11:41:17 -04:00
Matthew Brown
5210f9b69b
Fix #2966 - register constructor use for new $templated_class
2020-03-12 11:42:01 -04:00
Matthew Brown
c6a5781e78
Break apart FunctionCallAnalyzer::analyze method
2020-03-12 11:05:50 -04:00
Matthew Brown
99ca359f8b
Break apart large methods
2020-03-12 01:19:11 -04:00
Matthew Brown
96fbcd5a64
Break out more methods
2020-03-11 23:38:49 -04:00
Matthew Brown
329c9afdf5
Actually remove method
2020-03-11 23:20:19 -04:00
Matthew Brown
973703e396
Break out template param collection
2020-03-11 23:15:15 -04:00
Matthew Brown
9732697e45
Break out method call purity checks
2020-03-11 23:09:09 -04:00
Matthew Brown
bfb919d26a
Break out methods into their own classes
2020-03-11 23:04:52 -04:00
Matthew Brown
8f28f41399
Improve magic checks
2020-03-11 18:42:41 -04:00
Matthew Brown
950260a041
No erroneous UndefinedMethod when accessing sealed class
2020-03-11 18:27:07 -04:00
Matthew Brown
f128c8ffda
Fix overriding of mapped property type visibility
2020-03-11 17:41:05 -04:00
Matthew Brown
43d9361395
Break out more methods
2020-03-11 13:35:33 -04:00
Matthew Brown
89f6866893
Fix magic property test
2020-03-11 12:45:30 -04:00
Matthew Brown
50cddb5350
Break out purity checks
2020-03-11 12:24:25 -04:00
Matthew Brown
c5fa07920c
Fix improper property var calculation
...
Ref #1332
2020-03-11 11:03:27 -04:00
Matthew Brown
ef64e6e8eb
Improve abstract call handling
2020-03-11 10:36:39 -04:00
Matthew Brown
27598f508e
Fix too-long line
2020-03-11 10:18:53 -04:00
Matthew Brown
0d62fbdf98
Detect erroneous abstract static method calls
2020-03-11 10:18:40 -04:00
Matthew Brown
d2950af636
Break apart MethodCallAnalyzer a bit
2020-03-11 09:38:09 -04:00
Matthew Brown
1dc26afb27
Fix #2958 - prevent overriding final methods
2020-03-10 21:26:02 -04:00
Brown
d1fcbf38ae
Fix #2956 - treat Exception::getMessage as final and mutation-free
2020-03-10 15:12:55 -04:00
Brown
0cfe565d0a
Fix #2952 - always be cloning
2020-03-09 18:59:56 -04:00
Brown
2a72990d62
Add back support for unused method checks
2020-03-09 18:55:35 -04:00
leightonthomas
60fb3924bc
Fix #2914 - falsable functions who only expect true now produce errors
2020-03-09 14:25:18 -04:00
Brown
2c8688dd97
Don’t crash when conditionally defining classes with properties
2020-03-09 14:24:19 -04:00
Brown
04bcc32efb
Fix #2940 - fix array offset assignment under ??=
2020-03-09 14:09:41 -04:00
Brown
3c416482ec
Fix #2932 - don’t crash when trying to expand callable object-like array
2020-03-09 10:56:37 -04:00
Brown
a0da7356e9
Fix #2935 - make handling of templated properties much less hacky
2020-03-09 09:59:02 -04:00
Brown
40a7a1156f
Fix #2930
2020-03-09 09:45:35 -04:00
Matthew Brown
5b7ab6a542
Fix coercion
2020-03-09 01:32:27 -04:00
Matthew Brown
3243819f1b
Fix #2941 - allow class-string<self> to be fleshed out
2020-03-09 01:29:16 -04:00
Matthew Brown
5b4ed6b516
Fix #2942 - support array_splice properly for numeric-keyed arrays
2020-03-09 01:15:52 -04:00
Sergey Melesh
a5da866d97
Ignore exceptions already caught by previous catch
2020-03-08 20:19:56 -05:00
Matthew Brown
b999037263
Fix #2928 - properly expand out skipped template inheritance
2020-03-06 19:24:47 -05:00
Matthew Brown
352bd3f5c5
Remove redundant condition
2020-03-06 15:23:11 -05:00
Matthew Brown
766effb0db
Improve accuracy of diff generation
2020-03-06 13:48:59 -05:00
Matthew Brown
10b807b4f6
Fix reference generation from methods in --diff mode
2020-03-06 13:02:34 -05:00
Matthew Brown
a2a507166d
Fix #2923 - remove hack to fix a template issue
2020-03-06 09:42:23 -05:00
Matthew Brown
51bfc7c619
Only emit mixed issues for MissingClassPropertyType
...
Fixes #2388
2020-03-06 07:57:00 -05:00
Matthew Brown
7ea06c7b1a
Only emit PossiblyUndefinedVariable issue on variables
2020-03-05 23:40:47 -05:00
Matthew Brown
75a3412a42
Downgrade error when using unknown variable in mixed method
2020-03-05 21:24:08 -05:00
Matthew Brown
b2678d40aa
Revert "Fix #2909 - don’t treat args of unknown calls as possible by-reference vars"
...
This reverts commit 105fe012c4
.
2020-03-05 21:10:29 -05:00
leightonthomas
06f7df9974
Fix #1799 - support trailing commas in type aliases
2020-03-05 15:36:28 -05:00
Matthew Brown
105fe012c4
Fix #2909 - don’t treat args of unknown calls as possible by-reference vars
2020-03-04 23:49:06 -05:00
Matthew Brown
1615612394
Fix #2910 - prevent ternaries from ever being considered valid reference
2020-03-04 22:30:53 -05:00
Matthew Brown
c0c878cc9d
Don’t cache all traits
2020-03-02 22:27:54 -05:00
Matthew Brown
88c4088bc2
Prevent self/static refs outside classes
...
Fixes #2895
2020-03-01 17:25:55 -05:00
Matthew Brown
f44c3488eb
Keep track of which arg a given template was assigned from
...
Fixes #2900 - We only care about the depth of a templated match when templating from a particular argument. The next argument should essentially start afresh
2020-03-01 12:27:18 -05:00
Matthew Brown
e0d555e203
Allow function names to passed in as strings for callable template resolution
2020-02-29 15:43:45 -05:00
Matthew Brown
2d6cf8a0b0
Get bindable params earlier, before replacing with extended ones
2020-02-27 23:10:26 -05:00
Matthew Brown
abb3800d20
Fix bad template replacement
2020-02-27 23:00:40 -05:00
Matthew Brown
39d6800531
Remove default
2020-02-27 21:54:19 -05:00
Matthew Brown
c565afde64
Fix method call after method_exists check
2020-02-27 21:46:58 -05:00
Matthew Brown
1f19aed31b
Fix support for replacing mocked types in own classes
2020-02-27 21:36:03 -05:00
Philip Hofstetter
d315822bfa
make skipping of checks after invalid includes configurable
...
as suggested in the PR it's best to make the setting configurable.
In order not to break existing installations, we default to keeping the
old behaviour, but in a later version of psalm, we might change the
default.
2020-02-27 18:49:23 -05:00
Philip Hofstetter
f2277ebb6d
don't disable checks when includes can't be resolved
...
Any unresolvable include (even suppressed ones) would lead to some
subsequent tests being disabled as a side-effect.
this fixes #2817
2020-02-27 18:49:23 -05:00
Brown
35c1670602
Fix #2875 - treat intersections more similarly than before
2020-02-27 18:42:15 -05:00
Matthew Brown
eeb2858b30
Add additional fix for #2784
2020-02-27 08:56:39 -05:00
Brown
ea0a670230
Flesh out class constants in function call return type
...
Fixes #2884
2020-02-26 17:28:44 -05:00
Matthew Brown
746f8d4973
Prevent returning named object where template return assumed
2020-02-24 23:14:16 -05:00
Brown
234a6ba4b4
Suppress null check
2020-02-24 16:22:50 -05:00
Brown
ff7fbcda99
Fix #2871 - prevent keyed arrays from being interpreted as callables
2020-02-24 16:19:33 -05:00
Brown
0a8bb32115
Fix #2866 - prevent use of impure __toString via concatenation in pure contexts
2020-02-24 14:50:34 -05:00
Brown
3f226e2e86
Fix #2867 - treat echo as impure
2020-02-24 14:38:05 -05:00
Matthew Brown
f1a9b73a78
Fix message
2020-02-23 18:24:43 -05:00
Matthew Brown
ed4f4e35b8
Fix null checks
2020-02-23 18:20:59 -05:00
Matthew Brown
41e076e0ee
Fix bad
2020-02-23 18:19:53 -05:00
Matthew Brown
618ae77846
Prevent implicit __toString method calls in a pure context
2020-02-23 18:18:25 -05:00
Matthew Brown
1abece4f7c
Use more accurate types
2020-02-23 17:03:27 -05:00
Matthew Brown
b01bc9ab12
Fix union-of-mixed array key creation
2020-02-22 21:13:14 -05:00
Matthew Brown
4dae5b3190
Prevent more mixed array keys
2020-02-22 20:52:39 -05:00
Matthew Brown
27fd76649c
Prevent more array<mixed, ...> construction
2020-02-22 12:20:03 -05:00
Matthew Brown
6ad3d039df
Prevent more array<mixed,...> creation
2020-02-22 12:12:40 -05: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
a706f4d722
Fix #2242 - warn when using mutable dependencies
2020-02-22 10:04:46 -05:00
Matthew Brown
3cc4c2b37e
Fix #2721 - only warn about deprecated classes exactly where they are used
2020-02-22 01:12:19 -05:00
Matthew Brown
db17c85dd6
Fix #2787 - make accessing undefined objectlike key an error
2020-02-22 00:29:59 -05:00
Matthew Brown
9f13341ef9
Fix #2827 - detect literal numeric values
2020-02-22 00:16:15 -05:00
Matthew Brown
4707b21227
Fix tests
2020-02-21 22:15:25 -05:00
Brown
7d99a15072
Fix #2805 - forbid passing in mutable class to mutation-free context
2020-02-21 18:25:35 -05:00
Brown
f4485cc529
Fix #2847 - use fully-qualified function name
2020-02-21 16:44:31 -05:00
Brown
ae08552f40
Add null check
2020-02-21 16:04:18 -05:00
Brown
443558ca49
Fix #2844 - resolve constant offset references
2020-02-21 15:56:30 -05:00
Brown
292a2359b3
Add slash
2020-02-21 15:44:26 -05:00
Brown
b51863fc9b
Fix #2848 - allow casting templated types
2020-02-21 15:17:35 -05:00
Brown
f44a0f9f4c
Fix #2849 - allow object-like templated array comparison
2020-02-21 15:13:07 -05:00
Matthew Brown
aea33824e6
Fix #1555 - allow phantom class constants
2020-02-18 19:46:05 -05:00
Brown
0e23fab5d2
Detect bugs similar to that which caused #2832
2020-02-18 12:53:54 -05:00
Brown
6e8088776d
Use better return type for SimpleXMLElement::offsetGet
2020-02-18 10:58:56 -05:00
Matthew Brown
ced092874a
Make config generation smarter
2020-02-17 22:05:58 -05:00
Matthew Brown
00afcda5e0
Fix #2824 - allow unpacking of non-arrays with template params
2020-02-17 19:54:11 -05:00
Matthew Brown
3561c7d5dc
Make sure yield from expressions counted as used
...
Fixes #2823
2020-02-17 19:21:04 -05:00
Matthew Brown
cf977c3542
Don’t convert constant descriptions to lowercase
2020-02-17 18:19:33 -05:00
Matthew Brown
8dd49b1cbf
Fix lowercase-string to constant string coercion
2020-02-17 17:58:36 -05:00
Matthew Brown
99a97f4085
Update issue levels
2020-02-17 16:32:16 -05:00
Matthew Brown
196a0a5c4e
Replace issue data array with object
2020-02-16 18:24:40 -05:00
Matthew Brown
d3bfb96431
Fix #2808 - improve yield type discernment
2020-02-15 10:47:07 -05:00
Matthew Brown
3feccc1f98
Fix tests
2020-02-14 22:24:39 -05:00
Matthew Brown
653353709a
Use MethodIdentifier object instead of string
2020-02-14 20:54:26 -05:00
Matthew Brown
422bd25f04
Maybe fix indentation
2020-02-13 19:33:47 -05:00
Matthew Brown
3efe271819
Remove blank line
2020-02-13 18:36:37 -05:00
Matthew Brown
95e1bc0c48
Fix line breaks
2020-02-13 18:32:40 -05:00
Brown
b87161785d
Be even more permissive
2020-02-13 17:58:15 -05:00
Brown
210d65d0d6
Add a few lowercase-string types
2020-02-13 17:52:23 -05:00
Brown
bc0ccbda99
Add better inference for lower-cased methods
2020-02-13 17:30:00 -05:00
Brown
1c42875179
Support lowercase-string and warn about unnecessary calls to strtolower
2020-02-13 16:38:58 -05:00
Matthew Brown
305372e0e1
Add docblock return type as --diff dependency
2020-02-13 10:39:04 -05:00
Philip Hofstetter
395cf587d3
add plugin hook to be called after every function call
...
compared to AfterFunctionCallAnalysisInterface which gets only called
after a call to a function declared within the project, a plugin
implementing AfterEveryFunctionCallAnalysisInterface will get called for
every function call, including calls of PHP builtins.
On the other hand, this interface doesn't allow modification of the code
nor tweaking the return type, but it's still useful for accounting
purposes and for depreacting calls to PHP builtins
this fixes #2804
2020-02-13 09:10:24 -05:00
Matthew Brown
7d88100ad3
Docblock-provided type is not inferred
2020-02-12 11:34:54 -05:00
Matthew Brown
f64cdd2ca2
Fix #2798 - strip out trailing commas in object-like @return types
2020-02-12 09:18:43 -05:00
Matthew Brown
07a53f6b81
Fix #2789 - Numeric should not be a reserved class name
2020-02-11 22:34:34 -05:00
Brown
f141f7c526
Improve --diff checks by including trait-using classes in dependents
2020-02-11 16:39:33 -05:00
Brown
d8f5ad190b
Improve invalidation of inherited properties
2020-02-10 17:03:51 -05:00
Brown
89a0b101e4
Fix #2784 - no crash when get_class arg is mixed
2020-02-10 14:44:33 -05:00
Matthew Brown
3559fdd6b3
Fix #2742 - prevent paradoxes in assert calls
2020-02-09 11:42:41 -05:00
Matthew Brown
4de6f5c4ec
Fix #2442 - using asserting after a MixedAssignment
removes that error
2020-02-08 23:01:45 -05:00
Matthew Brown
5f4d797fe1
Fix #2772 - add support for multiple array_map function param inference
2020-02-08 12:17:57 -05:00
Matthew Brown
b439a573ce
Empty is also the bottom type
2020-02-08 11:40:22 -05:00
Matthew Brown
b26deb434d
Fix #2771 - replace empty params with generic equivalents
...
Ref #2755
2020-02-08 11:17:24 -05:00
Brown
dcc855de95
Fix #2739 - specify wildcards in constants
2020-02-07 10:54:57 -05:00
Matthew Brown
966336a475
Improve byref array handling
2020-02-06 23:52:27 -05:00
Matthew Brown
da541dbb51
Remove some unnecessary errors
2020-02-06 23:10:18 -05:00
Brown
d5f71bf529
Localise template checks to class being tested
2020-02-06 16:38:45 -05:00
Brown
54efbbe831
Fix bad assertion
2020-02-06 16:32:26 -05:00
Brown
9af12932b5
Add slash
2020-02-06 15:09:34 -05:00
Brown
6116b457ed
Port over more fixes from template match refactor
2020-02-06 15:07:57 -05:00
Brown
8fb810350a
Don’t cache no-effects hashes when checking for initialisations
2020-02-04 17:53:26 -05:00
Brown
4c83ca75b3
Fix #2738 - clear out property issues when modifying constructors
2020-02-03 16:43:25 -05:00
Matthew Brown
b3f6b56f9c
Add support for @psalm-readonly-allow-private-mutation
2020-02-02 15:56:08 -05:00
Matthew Brown
93fc1b1cc7
Fix #2729 - allow mutation of otherwise-readonly properties
2020-02-02 15:35:12 -05:00
Matthew Brown
8d7fb2b415
Add config flag to support properties without a magic getter
2020-02-02 14:23:38 -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
8db4bc7691
Improve formatting of intersection error messages
...
Also reduce false positives on intersections of templates
2020-02-02 12:25:24 -05:00
Matthew Brown
f0fc9cce5f
Fix missing param doc
2020-02-01 18:24:09 -05:00
Matthew Brown
d0b87b6cb0
Fix #2723 - use magic method return type where necessary
2020-02-01 18:21:32 -05:00
Brown
3b6f53a356
Revert "Fix #2724 - make sure behaviour is not dependent on array type"
...
This reverts commit 1df03b0ff2
.
2020-01-31 17:25:15 -05:00
Brown
1df03b0ff2
Fix #2724 - make sure behaviour is not dependent on array type
2020-01-31 16:46:05 -05:00
Brown
66227f9b7f
Fix #2727 - callable arg checks should obey ignore_falsable_return
2020-01-31 13:58:56 -05:00
Brown
8f95c5679e
Fix #2720 - allow throwing self
2020-01-30 18:00:31 -05:00
Brown
b46f219c51
Do better inference for array_map return type
2020-01-30 17:43:13 -05:00
Brown
9405314222
Always Be Cloning
2020-01-30 17:22:40 -05:00
Brown
216d9256a1
Allow templated array_map callable inference
...
Fixes #2719
2020-01-30 17:13:46 -05:00
Matthew Brown
5eb2ebc508
Add more type-system protections for bad array args
2020-01-29 23:41:17 -05:00
Matthew Brown
2829530ea6
Fix #2713 - allow interface with __invoke to be called
2020-01-29 22:33:28 -05:00
Matthew Brown
989123f82e
Fix line length
2020-01-29 22:31:23 -05:00
Matthew Brown
933dff9e20
Fix #2712 - allow __toString to have more specific type
2020-01-29 22:28:40 -05:00
Matthew Brown
2aebc522f1
Fix #2705 - mark by-ref args as used if not variables already
2020-01-29 21:46:30 -05:00
Matthew Brown
5c3ec7a531
Fix #2696 - make sure static property references are prevented in pure functions
2020-01-27 22:55:20 -05:00
Matthew Brown
5f7730c12e
Add slash
2020-01-27 12:26:06 -05:00
Brown
15808458cc
Better understand nesting loops and switches
...
Fixes #2700
2020-01-27 12:17:12 -05:00
Matthew Brown
8c89760ff3
Use more accurate type for large arraya
...
Fixes #2690
2020-01-25 10:38:23 -05:00
Brown
c3a989f6a8
Fix bad var
2020-01-24 15:44:18 -05:00
Brown
c09f97ed6e
Fix #2691 - allow list to be a callable maybe
2020-01-24 15:09:06 -05:00
Brown
38e9e8ba87
Register methods as used
2020-01-24 14:53:32 -05:00
Brown
548c9f7e65
Remove unused var
2020-01-24 14:09:25 -05:00
Brown
9f077f5aec
Fix formatting
2020-01-24 14:08:01 -05:00
Brown
53b0650c6c
Fix #2688 - foreach loop evaluation should allow changing loop var
2020-01-24 13:55:30 -05:00
Brown
faf6afdce8
Support call_user_func evaluation
...
Fixes #726
2020-01-24 13:34:50 -05:00
Brown
dbdf7473f4
Fix abstract trait method implementation errors when using self
2020-01-24 11:15:35 -05:00
Brown
34d73e7243
Fix #2685 - always evaluate $a++ in unknown call
2020-01-24 10:32:28 -05:00
Brown
0ffb833bf3
Fix #2677 - use better assertion for null coalesce
2020-01-23 14:52:35 -05:00
Brown
da43b8188f
Fix #2632 - detect invalid by-ref assignments in pure functions
2020-01-23 14:21:34 -05:00
Brown
0ac20e76c4
Fix #2631 - evaluate purity of uasort closure
2020-01-23 13:49:15 -05:00
Brown
e68ca6a20b
Fix #2661 - catch invalid array_push on property
2020-01-22 09:57:59 -05:00
Matthew Brown
8202af957d
Index issues by file to reduce some lookups
2020-01-21 21:07:44 -05:00
Brown
0132b3789b
Fix #2665 - warn about abstract class interface inheritance issues
2020-01-21 11:46:51 -05:00
Brown
a2e1dfd64e
Fix #2667 - don’t check inherited signature return types for accuracy
2020-01-21 11:07:44 -05:00
Brown
36f5c51f01
Allow unpacking of list args with known elements
2020-01-21 10:13:37 -05:00
Matthew Brown
1c8af2fdc7
Fix #2658 - catch exceptions thrown inside catch
2020-01-17 12:05:37 -05:00
Matthew Brown
7f093ca8ed
Fix #2626 - allow assertions on resource types
...
Also fixes #2266
2020-01-17 11:55:16 -05:00
Matthew Brown
b582c49f51
Fix #2645 - add workarounds for some edgecases
2020-01-17 10:25:05 -05:00
Matthew Brown
471d7610f0
Fix #2644 - improve type inference of autoloaded constants
2020-01-17 09:52:43 -05:00
Matthew Brown
c50fa27025
Identify trait method access level violations as less serious
2020-01-17 00:28:08 -05:00
Matthew Brown
257ebfd205
Improve trait method mismatch failure rules
2020-01-16 22:36:30 -05:00
Brown
c07fd13f2b
Fix #2623 - prevent crash when combining class strings in constants
2020-01-15 11:26:58 -05:00
Matthew Brown
4a03c4aedd
Fix impossible isset checks
2020-01-14 21:54:02 -05:00
Matthew Brown
c3edbdbc19
Allow checking $_SESSION for null without altering type
2020-01-14 21:51:04 -05:00
Brown
0f6b61d62d
Clone isset type before contradicting
2020-01-14 18:28:32 -05:00
Brown
3fd70a9c88
Only set if non-null
2020-01-14 17:03:58 -05:00
Brown
adc658901a
Improve inference of constant() calls
2020-01-14 16:56:09 -05:00
Brown
1ccababcb7
Track list-ness of constant arrays
...
Fixes #2621
2020-01-14 12:13:41 -05:00
Brown
c79a8ecbc2
Fix dumb
2020-01-14 10:55:07 -05:00
Brown
fcc7d896a0
Commit actual fix
2020-01-14 10:53:54 -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
Matthew Brown
b0073d4558
Fix #2614 - prevent isset($string)
2020-01-13 21:27:09 -05:00
Matthew Brown
ef3c2d30c9
Fix #2613 - allow docblock-defined object-like as non-empty-array
2020-01-13 21:05:30 -05:00
Brown
5d15ef062e
Fix phpcs
2020-01-13 17:28:00 -05:00
Brown
6c771e5dd3
Prevent crashes under PHP 7.3 on macs in Language server mode
2020-01-13 16:50:09 -05:00
Brown
eb7c3dcc11
Fix #2611 - fix combination of inferred closure return types
2020-01-13 10:23:58 -05:00
Tyson Andre
7a65eb1da9
Fix required parameter after optional in Psalm ( #2609 )
...
Psalm supports php 7.1 at minimum, so this is no longer necessary.
2020-01-12 12:46:08 -05:00
Тальгат Хайруллов
39a822759d
#2579 TooManyArguments was triggered if the variadic function declared at the autoloader file. Fixed. ( #2580 )
2020-01-12 11:33:38 -05:00
Matthew Brown
85966d8a21
Fix #2577 - fix list cast to array
2020-01-11 11:42:09 -05:00
Brown
2c7197ab4b
Fix #2578 - improve inference of functions beginning with assert
2020-01-09 15:45:17 -05:00
Brown
bd9142f131
Fix #2574 - remove assertions after increment
2020-01-09 11:51:56 -05:00
Matthew Brown
146dd461ef
Fix #2569 - improve template return type checks
2020-01-07 21:08:13 -05:00
Brown
55aceb2b6d
Add if
2020-01-07 13:18:24 -05:00
Brown
024ec38aa1
Fix #2567 - still remap params in some circumstances
2020-01-07 13:01:16 -05:00
Pavel Batečko
702ca34c41
Improve array function types ( #2566 )
...
* Improve sorting function out types
* Improve return types of array_diff_assoc(), array_intersect_assoc()
* Fix versionCompareAsCallable test
2020-01-07 11:40:23 -05:00
Matthew Brown
90d6b73fd8
Fix taint analysis of binary operations
2020-01-07 08:50:31 -05:00
Matthew Brown
1f777bec0e
Capture non-empty-string from concat more effectively
2020-01-07 01:44:12 -05:00
Matthew Brown
ce5917c6fb
Add better string detection
2020-01-07 01:21:29 -05:00
Matthew Brown
b351df0483
Fix typo
2020-01-07 01:06:51 -05:00
Matthew Brown
2cd7f74efb
Fix #2554 - treat templated class string as proper subtype of class string
2020-01-07 00:39:16 -05:00
Matthew Brown
eaae84c7f8
Fix concat emptiness
2020-01-06 21:30:19 -05:00
Matthew Brown
cc9e0fab67
Prevent string being used in non-empty-string location
2020-01-06 20:57:57 -05:00
Brown
5c45221bdc
Improve reconciliation of ||
...
Ref #2426
2020-01-06 16:37:44 -05:00
Brown
578b90c2da
Improve naming of variables
2020-01-06 16:03:17 -05:00
Brown
49d9dd12b6
Change $op_ to $right in a few more places
2020-01-06 15:44:48 -05:00
Brown
9149f468e6
Change var name
2020-01-06 15:42:06 -05:00
Brown
083fbc55e1
Add more specific UndefinedMagicMethod issue
2020-01-06 14:23:33 -05:00
Brown
8e786a17dd
Deal with a reconciled var more accurately
...
Ref #2426
2020-01-06 11:09:07 -05:00
Brown
cd0d118463
Fix count
2020-01-06 10:40:46 -05:00
Matthew Brown
8c71da75af
Add fix to more places
2020-01-06 09:47:14 -05:00
Matthew Brown
a212375343
Fix possibly bad property fetch
2020-01-06 09:21:42 -05:00
Matthew Brown
137650fe6f
Fix #2556 - don’t remap params if they’ve already been remapped once
2020-01-06 09:18:16 -05:00
Matthew Brown
4888ae67a6
Fix #2558 - remove wedge clauses when they’re the only thing left
2020-01-06 08:56:50 -05:00
Matthew Brown
4e85967184
Fix tests
2020-01-05 21:58:18 -05:00
Matthew Brown
867511d7fd
Use more specific error magic properties
2020-01-05 21:07:26 -05:00
Matthew Brown
f48ecda295
Fix ref
2020-01-05 18:53:24 -05:00
Matthew Brown
2fb5a9d326
Few small improvements
2020-01-05 18:37:07 -05:00
Matthew Brown
d4ef5c2a4a
Fix read flags
2020-01-05 17:20:09 -05:00
SignpostMarv
fbf66ba7f6
Typecast bool to int ( #2550 )
...
* adding specific checks for typecasting booleans, re: vimeo/psalm#2548
* satisfying phpcs
* amend check to use psalm types rather than php-parser types
* implementing tests for typecasting bools to int
* satisfying phpcs
2020-01-04 16:36:19 -05:00
Matthew Brown
37810b5a44
Fix #2552 - add parse error when encountering empty array values
2020-01-04 16:33:02 -05:00
Matthew Brown
8ecb8555e2
Fix count
2020-01-04 13:12:22 -05:00
Matthew Brown
37fb15250c
Add check for only simplest conditionals
2020-01-04 13:09:55 -05:00
Matthew Brown
8cbc26c2f1
Add range checks to identify for loops that always enter
2020-01-04 13:05:23 -05:00
Matthew Brown
9fa2db1b6c
Move Union::getTypes to Union::getAtomicTypes
2020-01-04 12:20:26 -05:00
Matthew Brown
ba6d0df048
Fix #2546 properly
2020-01-04 11:16:53 -05:00
Brown
996053cca6
Fix #2545 - fix bug when coming back after analysing method call in constructor
2020-01-03 11:29:45 -05:00
Brown
0e39759ed6
Improve solution to #2546 slightly
2020-01-03 10:56:47 -05:00
Brown
4263417ac3
Fix #2546 - ignore vars set inside loop
2020-01-03 10:33:32 -05:00
Matthew Brown
d5d4a1826d
Add initial support for @mixin Foo
2020-01-02 23:50:19 -05:00
Brown
de0fad2197
Fix #2541 - check variable var assignment
2020-01-02 14:07:02 -05:00
Brown
ca1e65b29b
Handle iterators better
2020-01-02 10:41:43 -05:00
Matthew Brown
25e7039f02
The current method is used
...
Fixes #2540
2020-01-01 18:33:12 -05:00
Matthew Brown
4630d19d45
Fix psalm running
2020-01-01 12:49:12 -05:00
Matthew Brown
4021d673bd
Fix #2536 - grab binary op left assertions after analysis
2020-01-01 12:45:24 -05:00
Matthew Brown
d7fb64bbb7
Fix #2349 - use function suppressed issues
2019-12-31 09:16:49 -05:00
Matthew Brown
5bd9b988fb
Fix #2494 - don’t use extended name for anonymous classes
2019-12-31 08:46:52 -05:00
Matthew Brown
87fec3e6fe
Fix #2505 - don’t attempt to analyse classes that weren‘t properly scanned
2019-12-31 08:04:51 -05:00
Matthew Brown
ec292f58dc
Move explode handling into its own file
2019-12-30 16:39:37 -05:00
Matthew Brown
44441042f0
Fix style things
2019-12-30 11:07:04 -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
Matthew Brown
c79ba0b09e
Include non-empty-string type in more places
2019-12-30 07:25:36 -05:00
Matthew Brown
023c4bcef0
Fix #2532 - fix templating inside class method when calling templated method
2019-12-30 07:25:36 -05:00
Matthew Brown
508c2e268a
Process phpstan-template in class docblocks
2019-12-29 16:08:09 -05:00
Matthew Brown
2b88261ecd
Fix templated assertion cc @vasily-kartashov
...
This is a good reason for you to skip 3.8.1
2019-12-29 11:57:54 -05:00
Matthew Brown
b375ebf06f
Fix test
2019-12-29 10:29:03 -05:00
Matthew Brown
26876b9a13
array_push shouldn’t change list type
2019-12-29 10:20:44 -05:00
Matthew Brown
d3fb0181cb
Fix #2527 - no crash when template cannot be resolved
2019-12-29 08:45:42 -05:00
Matthew Brown
0c7851ae21
Fix #2526 - always check for array assignment in assignop
2019-12-29 08:36:46 -05:00
Matthew Brown
55c2f7faa2
Fix #2508 - don’t replace templated types with generic ones inside own function
2019-12-28 18:38:02 -05:00
Matthew Brown
ce9435da19
Fix #2521 - use correct context class when analysing trait
2019-12-28 15:56:26 -05:00
Bruce Weirdan
4110ec351b
Make travis green again ( #2518 )
...
* Bumped phpspec/prophecy version to prevent 7.4 deprecations
* Fix DOMDocument::$config type
This property was documented as containing DOMConfiguration object, but
in fact always returned `null` (see [php source](ee80567a83/ext/dom/document.c (L542)
)).
DOMConfiguration class is removed in PHP 8.
* Dropped unused use
* Allow to set PHP 8.0 as current version
* Fix CallMap issues for PHP 8.0
- Use both major and minor version to load deltas
- Don't load non-existent deltas
- Stop at lowest possible delta
2019-12-27 19:06:09 -05:00
Matthew Brown
982fe627e0
Fix #2515 - allow chained assertions on @psalm-mutation-free methods
2019-12-27 16:44:55 -05:00
Matthew Brown
068afa09d3
Add very basic implementation for class-string-map
...
Fixes #1969
2019-12-27 12:49:28 -05:00
Matthew Brown
2f2cd85a6a
Identify invalid static property array assignment
2019-12-27 10:34:51 -05:00
Valentin Udaltsov
006f788d6a
Added array_fill_keys support ( #2512 )
...
* Added array_fill_keys support
* Removed unnecessary array_fill_keys phpdoc
2019-12-27 13:30:42 +00:00
Matthew Brown
6b81f8c64a
Fix #2506 - use correct flag when checking classes after analysis
2019-12-24 01:02:34 +00:00
Matthew Brown
ee35db5a3b
Refine assignment somewhat
2019-12-22 12:43:57 +00:00
Matthew Brown
141bfd313f
Improve handling of assignments in arrays
2019-12-22 12:36:16 +00:00
Matthew Brown
8bd68608fa
Fix message
2019-12-22 11:08:47 +00:00
Matthew Brown
4c8730c5a3
Improve handling of unset array, ensuring that keys don’t persevere
2019-12-22 01:42:39 +00:00
Matthew Brown
946b4f73e6
Fix #2493 - don’t crash when provided function doesn’t exist
2019-12-21 00:34:31 +00:00
Matthew Brown
8c1638efc5
Fix tests once more
2019-12-20 19:37:36 +00:00
Matthew Brown
3d03da271d
Fix tests to give more accurate locations
2019-12-20 18:18:26 +00:00
Matthew Brown
e475a1826c
Issues with non-abstract methods should always be MethodSignatureMismatches
2019-12-20 18:08:35 +00:00
Matthew Brown
a5434aabfe
Fix #2491 - report trait issues at the most local place
2019-12-20 17:57:31 +00:00
Matthew Brown
1b54d058aa
Fix #2488 - add support for @phpstan- annotations
2019-12-20 10:49:10 +00:00
Matthew Brown
a4191171bf
Fix #2483 - treat intersecting PHPDocs from interfaces better
2019-12-20 01:42:57 +00:00
Matthew Brown
d7b99148be
Add support for JUnit report type
...
Fixes #2485
2019-12-19 20:18:09 +00:00
Matthew Brown
15cd62d332
Fix #2484 - add support for spaces in assert-if-true types
2019-12-19 19:24:26 +00:00
Matthew Brown
cc3df7d6be
Remove errant comma
2019-12-18 23:50:57 +00:00
Matthew Brown
af28d650f3
Fix #2408 - existing offsets checked with isset should be valid
2019-12-18 23:48:25 +00:00
Matthew Brown
734ad02203
Fix #2476 - flesh out iterable params
2019-12-18 17:19:54 +00:00
Matthew Brown
9d8ca08fb9
Fix #2479 - analyse undefined function arguments too
2019-12-18 16:37:48 +00:00
Matthew Brown
11433dc9d0
Fix references
2019-12-18 14:43:15 +00:00
Matthew Brown
cb797c6159
Fix inherited class methods as well
...
Ref #2478
2019-12-18 14:39:37 +00:00
Matthew Brown
49a3f89526
Fix #2478 - process trait template inheritance sensibly
2019-12-18 13:58:37 +00:00
Brown
e551b24843
Classes that just reference themselves aren’t used
2019-12-16 11:46:10 -05:00
Matthew Brown
bf67c036aa
Fix #2474 - treat free-standing binaryops as ifs instead
2019-12-16 08:32:00 -05:00
Matthew Brown
090ad90de3
Fix build issues
2019-12-15 13:28:38 -05:00
Matthew Brown
72f3c306d7
Fix #2471 - don’t erroneously template class-strings
2019-12-15 13:23:04 -05:00
Matthew Brown
1a92e98dd3
Warn about more generic callables
2019-12-14 11:55:26 -05:00
Matthew Brown
ce2e5b27c0
Fix #2470 - only parameterise constructors according to inherited params
2019-12-14 11:38:09 -05:00
Matthew Brown
c7a3ba9e4a
Refine callable type
2019-12-14 10:47:20 -05:00
Matthew Brown
b48021dbfd
Allow null return on template with null as type
...
Ref #2466
2019-12-13 21:56:43 -05:00
Matthew Brown
f40b6625eb
Fix #2431 - allow null in template defaults
2019-12-13 21:40:09 -05:00
Brown
2469f04715
Improve reconciliation of arrays with constant offsets
2019-12-13 17:17:14 -05:00