1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-15 19:07:00 +01:00
Commit Graph

5461 Commits

Author SHA1 Message Date
Brown
41af71556d Fix #2785 - parse wildcards in variables better 2020-02-10 15:30:06 -05:00
Brown
89a0b101e4 Fix #2784 - no crash when get_class arg is mixed 2020-02-10 14:44:33 -05:00
Matthew Brown
074780547d Fix #2780 - filter int on more values 2020-02-09 23:58:37 -05:00
Matthew Brown
47ffb59241 Fix #2764 - iterate through all possible template types where necessary 2020-02-09 18:11:50 -05:00
Markus Staab
45468d801f Dont corrupt checkstyle xml 2020-02-09 15:54:37 -05:00
Matthew Brown
d0ac709b70 Use more robust, if slower, mechanism that’s intersection-safe 2020-02-09 15:34:50 -05:00
Matthew Brown
14f8fb8ecd Fix two redundant asserts 2020-02-09 11:45:43 -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
Bruce Weirdan
d99f23eb45 Fix #2761 2020-02-07 12:51:40 -05:00
Brown
dcc855de95 Fix #2739 - specify wildcards in constants 2020-02-07 10:54:57 -05:00
Matthew Brown
4e36f6caf5 Add explicit paths for included files
Fixes #2757
2020-02-07 09:06:15 -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
e567f8c728 Fix #2752 - string casts can be implicit method calls, don’t remove automatically 2020-02-06 21:05:16 -05:00
Brown
23f8967fb5 Fix conditional class-string template replacement 2020-02-06 19:40:18 -05:00
Brown
2a0dd48dcd Fix bad type 2020-02-06 17:31:17 -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
0fd0d01d2b Improve class-string templating 2020-02-06 14:35:36 -05:00
Brown
638e90356a Add slash 2020-02-06 11:58:39 -05:00
Brown
a16e03d992 Fix #2756 - narrow assertion templated type 2020-02-06 11:49:15 -05:00
Brown
ffd04132ce Fix #2754 - use ext-ds stubs from PHPStan 2020-02-06 10:38:10 -05:00
Benjamin Morel
b486bd4c78 PDOStatement::fetchColumn() can return any scalar 2020-02-05 11:46:01 -05:00
Brown
50fc50fab0 Fix #2751 - allow static methods to inherit class templates 2020-02-05 11:19:40 -05:00
Matthew Brown
bbdb1254ad Add line break 2020-02-05 08:51:11 -05:00
Lars Moelleken
759cfe4555 add more impure function calls 2020-02-05 08:51:11 -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
Thomas Gerbet
6f6e26580a Remove non-existent $serverctrls parameter for \ldap_bind()
In a8e58b0ba0 a `$serverctrls` parameter
was incorrectly added to the \ldap_bind() function.

See php/doc-en#20.
2020-02-02 12:34:28 -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
f981c61990 Add slashes 2020-02-02 11:04:29 -05:00
Matthew Brown
b67f661604 Fix #2735 - interpret template check in context of class-string generation 2020-02-02 10:51:18 -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
Matthew Brown
6dbb911da1 Fix templating class-string unions 2020-02-01 15:02:44 -05:00
Orklah
e48dc2d158 small stubs changes for reflection 2020-02-01 12:54:43 -05:00
Matthew Brown
292f6e797f Only make directly-assertable things possibly-undefined
Ref #2724
2020-02-01 10:58:13 -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
97343c3eb8 Fix unnecessary param 2020-01-31 16:36:46 -05:00
Brown
adbe44d7bb Revert countable checks 2020-01-31 15:24:44 -05:00
Brown
66227f9b7f Fix #2727 - callable arg checks should obey ignore_falsable_return 2020-01-31 13:58:56 -05:00
Brown
34408a892c Support has-at-least type in negation 2020-01-31 13:13:50 -05:00
Brown
37765098e9 Fix #2725 - allow empty checks on objects that implement countable 2020-01-31 12:55:33 -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
Philip Hofstetter
f6983fd883 allow setting php version from config or composer.json
if a composer.json is present and a PHP version requirement is
configured, we set the php version to the minimal PHP version that
satisfies the composer requirement.

Additionally, this adds a `phpVersion` attribute to the <psalm> tag. If
that's set, it takes precedence over what has been detected in
composer.json.

And finally, the --php-version command line flag continues to work and
takes precedence over the setting in the <psalm> tag

this fixes #2628
2020-01-30 08:48:53 -05:00
Matthew Brown
6c7d1b4e64 Ignore nullable return DomNodeList/DomNameNodeMap::item 2020-01-29 23:53:47 -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
4b7780905e Improve reconciliation logic once more 2020-01-29 22:00:20 -05:00
Matthew Brown
06ffa24c26 Fix assertions to be better 2020-01-29 21:46:44 -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
e92656c4cb Fix #2707 - reconcile object equality properly 2020-01-29 21:25:44 -05:00
Matthew Brown
ce0298acc4 Fix #2704 - array_merge should ignore possibly-false issues where applicable 2020-01-29 21:09:33 -05:00
Matthew Brown
4489b7169d Allow possibly-false return for DOMDocument::saveXML
Fixes #2714
2020-01-29 21:03:34 -05:00
Matthew Brown
c2f1b3b700 Use slightly cleaner way of sorting file issues 2020-01-29 09:00:13 -05:00
Philip Hofstetter
8f8672dd6b
do not corrupt internal state when a baseline is present (#2710)
this fixes #2709
2020-01-29 08:53:58 -05:00
Pavel Batečko
ecf85aef12
Add generic definition of DOMNamedNodeMap (#2703)
* Fix #2638 - propagate phantom classes to recursive calls to Scanner::queueClassLikeForScanning()

* Add generic definition of DOMNamedNodeMap
2020-01-29 08:39:07 -05:00
Matthew Brown
1dc1ebe23a Remove unused variable 2020-01-27 23:19:03 -05:00
Matthew Brown
ff01f41b44 Allow strings in assert annotation 2020-01-27 23:15:50 -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
orklah
563032c5f2 List notation in callmap (#2693)
* improve multiple return types with list<> + Exception::getTrace details

* fix broken syntax

* seems like changing libxml_get_errors return type angered the CI God

* revert array_count_values
2020-01-27 09:13:15 -05:00
Matthew Brown
dec274a1fe Fix list scanning 2020-01-27 09:07:22 -05:00
Philip Hofstetter
5774cfed7d mark additional impure functions (#2699)
both `fflush` and `vprintf` have very similar cousins already declared
as having side-effects.

This fixes #2687
2020-01-27 08:12:40 -05:00
Barney Laurance
4a4c0f1362 Clarify documentation of --diff and --diff-methods (#2680)
* Clarify documentation of --diff and --diff-methods

* Save Psalm cache in CircleCI
2020-01-25 10:50:11 -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
orklah
ef07e55deb add list<> notation in stubs (#2675)
* add list<> notation in stubs

* change phpdoc to be compatible with expected list<>

* change interface phpdoc to be compatible with expected list<>

* revert array_chunk => special case to handle with preserve keys.

* change array_chunk return to match both behaviour

* revert list<> notation in parameters where not required
2020-01-24 13:17:36 -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
Matthew Brown
3af48347a9 Bind template params for IteratorIterator 2020-01-24 09:18:31 -05:00
Matthew Brown
efd46b35c5 Fix signatures 2020-01-24 09:10:42 -05:00
Matthew Brown
c893bd6a6b Add IteratorIterator generics 2020-01-24 08:58:52 -05:00
Matthew Brown
c87b19eeb0 Fix #2681 - no error after empty check on literal value 2020-01-23 22:26:49 -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
311164f5ee Fix #2679 - session_start is impure 2020-01-23 10:26:11 -05:00
Matthew Brown
fa65ab8168 Add support for Github Actions output
Fixes #2678
2020-01-23 07:14:48 -05:00
SignpostMarv
dc80880a80 check if phpstorm meta path is a file or directory (#2643)
* check if phpstorm meta path is a file or directory, making a note if it was a directory, re: #2640

* import is_file()

* overcautiously glob into meta directory
2020-01-22 11:06:06 -05:00
Brown
e68ca6a20b Fix #2661 - catch invalid array_push on property 2020-01-22 09:57:59 -05:00
Matthew Brown
947765c1c6 Improve count checks slightly 2020-01-22 07:51:24 -05:00
Ben Davies
5139d61171 remove unnecessary loops (#2671) 2020-01-22 07:42:00 -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
504de0a9ce Catch more UnanalyzedFileExceptions to prevent LSP crash
Fixes #2633
2020-01-20 23:27:56 -05:00
orklah
f2802b6862 fix typo (#2663) 2020-01-20 23:19:48 -05:00
Matthew Brown
db7b537bd1 Fix missing class 2020-01-17 13:19:57 -05:00
Matthew Brown
8ccd4860e3 fclose should treat resource as passed-by-reference 2020-01-17 13:12:00 -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
1697115861 Only set from docblock if not mixed 2020-01-17 10:34:13 -05:00
Matthew Brown
a840743015 Fix #2625 - set template as type from docblock 2020-01-17 10:27:00 -05:00
Matthew Brown
b582c49f51 Fix #2645 - add workarounds for some edgecases 2020-01-17 10:25:05 -05:00
Matthew Brown
2c48d42904 Allow destructuring of callable array
Fixes #2653
2020-01-17 10:02:58 -05:00
Matthew Brown
471d7610f0 Fix #2644 - improve type inference of autoloaded constants 2020-01-17 09:52:43 -05:00
Matthew Brown
24e1d5446c Fix #2642 - merging two explicit lists is still a list 2020-01-17 09:31:08 -05:00
Matthew Brown
adf230e873 Fix #2636 - allow non-empty-list in assert annotation 2020-01-17 09:06:34 -05:00
Alexander Wühr
f9560009ca Allow false as \PDO::fetch return type (#2647) 2020-01-17 08:48:08 -05:00
Matthew Brown
c50fa27025 Identify trait method access level violations as less serious 2020-01-17 00:28:08 -05:00
Matthew Brown
be6cd0f8c6 Fix generation of files in non-psr directory 2020-01-16 23:24:53 -05:00
Matthew Brown
257ebfd205 Improve trait method mismatch failure rules 2020-01-16 22:36:30 -05:00
Bruce Weirdan
17857163fc Modular config files (#2635)
This change introduces an option to have the configuration split across
several files using standard XInclude tags. This may be useful for more
complex configs, or to include auto-generated parts into a manually
written config file.
2020-01-16 15:57:52 -05:00
Tyson Andre
6612bb74a1 Use floor() instead of round() for long progress percentage (#2634)
PHPUnit and many other applications use floor.
Otherwise, the second-last lines would show 100% despite not being
complete.

```
\sprintf(
    ' %' . $this->numTestsWidth . 'd / %' .
    $this->numTestsWidth . 'd (%3s%%)',
    $this->numTestsRun,
    $this->numTests,
    \floor(($this->numTestsRun / $this->numTests) * 100)
)
```
2020-01-16 15:57:09 -05:00
Alfred Bez
619ced135b fixed RarArchive signatures (#2641) 2020-01-16 11:01:14 -05:00
Pavel Batečko
1b0eba74fd Allow NULL $contextnode in DOMXPath::query() (again) (#2637) 2020-01-16 08:35:36 -05:00
Brown
d434f7fb9d Add list identification for late-resolved constants
Fixes #2624
2020-01-15 11:54:01 -05:00
Brown
1b551b805b Fix #2627 - infer arrow function effects for array_filter 2020-01-15 11:40:49 -05:00
Brown
c07fd13f2b Fix #2623 - prevent crash when combining class strings in constants 2020-01-15 11:26:58 -05:00
Matthew Brown
389af1bfc7 Fix #2618 setting list param from docblock 2020-01-14 22:46:19 -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
Matthew Brown
1202ba45ef
Fix blank line 2020-01-14 18:51:46 -05:00
Brown
df8f2085f0 Change constant type to be more forgiving 2020-01-14 18:39:15 -05:00
Brown
de7a870509 Add better mixed check 2020-01-14 18:38:02 -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
orklah
b09869b7c6 callmap changes (#2612)
* set_error_handler return the same type as its param

* a constant can only have scalars, array of scalars or null

* a constant can only have scalars, array of scalars or null
2020-01-14 16:55:25 -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
Mark A. Hershberger
fbc2c21c9b bug: #2103 -- throw error if directories are given instead of file (#2605)
* bug: #2103 -- throw error if directories are given instead of file

* use global is_dir
2020-01-12 10:53:12 -05:00
Pavel Batečko
87debfe954 Support suppressing all issues with @psalm-suppress all (#2584)
* Support suppressing all issues using @psalm-suppress all

* Document @psalm-suppress all
2020-01-12 10:38:32 -05:00
SignpostMarv
9b2ceba2db removing trailing comma in function call, not detectable by php-cs-fixer re: FriendsOfPHP/PHP-CS-Fixer#4135 (#2597) 2020-01-11 16:00:38 -05:00
Matthew Brown
39f0def7bf Add null check 2020-01-11 15:59:28 -05:00
Matthew Brown
131fb97663 Fix #2594 - forbid isset check on null 2020-01-11 15:58:40 -05:00
Matthew Brown
7b887efc2c Fix #2547 - use better conditional check 2020-01-11 12:33:58 -05:00
Matthew Brown
bd846123ce Fix #2560 - handle special case of array_filter on single-element array 2020-01-11 11:54:29 -05:00
Matthew Brown
40406c7ff0 Fix #2576 - remove literal key values if array_filter has no args 2020-01-11 11:48:22 -05:00
Matthew Brown
85966d8a21 Fix #2577 - fix list cast to array 2020-01-11 11:42:09 -05:00
Matthew Brown
2ae85f7c8b Fix #2593 - don’t crash with bad @param-out annotation 2020-01-11 10:47:31 -05:00
Matthew Brown
1b7b71f2ca Fix #2591 - always remove changed var from parent clauses
Even when there are no child clauses due to an assertion
2020-01-10 23:46:45 -05:00
Brown
5ddcab1003 Fix subtraction of string from numeric 2020-01-10 18:05:45 -05:00
Brown
df8e3845e5 Fix #2590 - allow null argument for DateTime when no second arg passed 2020-01-10 15:53:15 -05:00
Brown
03030d4887 Fix #2583 - don’t convert scalar terms in @method annotations 2020-01-10 11:29:18 -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
bd7f342491 Add constant definitions 2020-01-08 23:48:42 -05:00
Brown
55bf6333af Fix addition of Psalm classes 2020-01-08 17:47:30 -05:00
Brown
eb7a8ae8d2 Fix sorting 2020-01-08 17:43:49 -05:00
Brown
6b43c41ea3 Add file-defined functions 2020-01-08 17:40:50 -05:00
Brown
7482b9e56f Emit all stubs discovered by Psalm during analysis
Fixes #827
2020-01-08 17:23:40 -05:00
Matthew Brown
146dd461ef Fix #2569 - improve template return type checks 2020-01-07 21:08:13 -05:00
Brown
adfb488986 Fix #2565 - prevent infinite recursion when analysing file with @mixin annotations that reference each other 2020-01-07 17:06:44 -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
8f3d325bbc Fix comparison 2020-01-07 02:24:21 -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
07aaa3f99d Don’t complain about method mismatches for @mixin 2020-01-06 18:04:28 -05:00
Dusk
63dea52e76 Add support for most PDOStatement fetch modes (#2553)
Flags like PDO::FETCH_CLASSTYPE and PDO::FETCH_PROPS_LATE aren't
supported yet.

(in re. #2529)
2020-01-06 16:41:52 -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
bd2cbf28e3 Add parent issue type for UndefinedMagicMethod 2020-01-06 14:24:20 -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
fb48db9163 Remove unused property 2020-01-03 13:10:24 -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
df33405635 Seal properties and methods whenever @method/@property is used 2020-01-03 08:44:52 -05:00
Matthew Brown
bf310fb326 Seal where a mixin is given 2020-01-03 08:34:11 -05:00
Matthew Brown
d5d4a1826d Add initial support for @mixin Foo 2020-01-02 23:50:19 -05:00
Brown
9177b410cb Fix reconciliation of callable 2020-01-02 16:59:19 -05:00
Brown
bfbb9b2b34 Un-nest some logic 2020-01-02 16:59:19 -05:00
Brown
9d8706dbad Check for posix existence before using threads
Fixes #2335
2020-01-02 15:30:02 -05:00
Brown
5f5a942a32 Improve handling of interface-implementing edge-case 2020-01-02 15:24:03 -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
Brown
314db95cee Add support for sort param 2020-01-02 10:27:13 -05:00
Matthew Brown
e68fd02e80 Refine class string after callable array check 2020-01-02 08:31:19 -05:00
Matthew Brown
25e7039f02 The current method is used
Fixes #2540
2020-01-01 18:33:12 -05:00
Matthew Brown
033b610770 Fix composer checks once more 2020-01-01 17:29:30 -05:00
Matthew Brown
872365f444 Fix #2539 - use unaliased parent class name 2020-01-01 17:23:13 -05:00
Matthew Brown
a69903cd92 Fix dumb 2020-01-01 15:22:37 -05:00
Matthew Brown
690209d8e5 Add sort function stub 2020-01-01 15:07:41 -05:00
Matthew Brown
086d141f5c Fix #2537 - allow complex intersection templates to be preserved 2020-01-01 13:51:54 -05:00
Matthew Brown
d175abe0f0 Improve templating for intersections 2020-01-01 13:31:41 -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
f79088a955 Fix undefined var 2019-12-31 09:13:18 -05:00
Matthew Brown
16b8edd583 Fix #2409 - use more robust assertion parsing 2019-12-31 09:10:14 -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
02fd1659ef Ignore serialize/unserialize methods
Fixes #2511
2019-12-31 07:56:35 -05:00
Matthew Brown
79be178146 Add associative-array as an alias of array 2019-12-30 17:01:10 -05:00
Matthew Brown
bc8952c793 Add Phan updates 2019-12-30 16:58:34 -05:00
Matthew Brown
8f504f9664 Fix style 2019-12-30 16:42:34 -05:00
Matthew Brown
ec292f58dc Move explode handling into its own file 2019-12-30 16:39:37 -05:00
Matthew Brown
b7fa15f89d Port over updates from PHPStan 2019-12-30 15:55:15 -05:00
Matthew Brown
c14d1f7d7e Fix order 2019-12-30 15:55:15 -05:00
Matthew Brown
53a2f77d00 Add better return type provider for PDO statement
Fixes #2529
2019-12-30 11:34:24 -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
Bruce Weirdan
7d3dd47efa Added support for preg_grep (#2523) 2019-12-29 11:05:08 -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
6a6a6ab2d7 Fix dumb 2019-12-27 16:51:49 -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
1d2fefd647 Preserve more information after removing types 2019-12-27 15:26:01 -05:00
Matthew Brown
9a04d93cf9 Fix #2352 - treat hexdec return type a bit better 2019-12-27 14:14:49 -05:00
Matthew Brown
4a28525275 Fix removal of traversable from iterable
Fixes #2509
2019-12-27 13:01:44 -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
b78f273ccf Improve handling of template params a smidge 2019-12-27 11:49:44 -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
8fc3c3b8cd Improve removing types from callable 2019-12-22 10:29:00 +00:00
Matthew Brown
3be8e4c6ba Improve string comparison negation 2019-12-22 02:09:22 +00:00
Matthew Brown
4c8730c5a3 Improve handling of unset array, ensuring that keys don’t persevere 2019-12-22 01:42:39 +00:00
Bruce Weirdan
ede1076039 Dropped unused use (#2495) 2019-12-21 00:58:05 +00:00
Matthew Brown
946b4f73e6 Fix #2493 - don’t crash when provided function doesn’t exist 2019-12-21 00:34:31 +00:00
Bruce Weirdan
7e8268fe94 Drop non-existent param from docblock (#2492)
I wonder why psalm didn't catch it.
2019-12-21 00:14:22 +00:00
Matthew Brown
59aeb6b6c3 Fix #2490 - allow overriding renamed trait methods in subclass 2019-12-20 20:11:27 +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
395cac0e0b Add specific exception 2019-12-20 18:08:53 +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
ab03ac06f4 Add support for spread operator before type as well
Ref #2429
2019-12-19 00:29:01 +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
456aa1c569 Fix #2468 - add support for zipping arrays 2019-12-18 18:14:02 +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
bdbc758ddc Fix #2475 - allow iterable covariance 2019-12-16 07:16:35 -05:00
Matthew Brown
529efaa29c Fix #2473 - allow array_map to work with callables returning static 2019-12-15 19:55:20 -05:00
Matthew Brown
7cb021a268 Fix the fix 2019-12-15 14:11:24 -05:00
Matthew Brown
1d0ac3df29 Fix #2472 - array_map should retain non-emptiness when passed string callables 2019-12-15 14:06:12 -05:00
Matthew Brown
3ef93fd795 Add slash 2019-12-15 13:34:12 -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
c3d8315ab9 Don’t inherit parameter covariance 2019-12-14 10:06:40 -05:00
Matthew Brown
797a059a84 Prevent static methods using class instance template types 2019-12-14 09:40:09 -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
Brown
6d02aa86e8 Reconcile string emptiness a bit better 2019-12-13 15:51:54 -05:00
Matthew Brown
c9b5e96b0f Fix ref 2019-12-13 08:11:04 -05:00
Matthew Brown
ca5f8fabdc Fix #2464 - null coalesce shouldn’t allow undefined vars 2019-12-13 08:06:40 -05:00
Matthew Brown
6ff312fe13 Fix test 2019-12-12 11:43:03 -05:00
Matthew Brown
1df77a9f43 Only mark vars as reconcilable if they can be memoized 2019-12-12 11:24:47 -05:00
Matthew Brown
f45014d403 Fix #2460 - allow assertions on immutable method calls 2019-12-12 09:32:33 -05:00
Matthew Brown
8f25183784 Fix #2459 - don’t add assertions to parent context unnecessarily 2019-12-12 00:37:00 -05:00
Brown
05783eb616 Find issues with impossible property values 2019-12-11 17:08:02 -05:00
Brown
612f74f481 Clean up static property reconciliation 2019-12-11 15:05:09 -05:00
Brown
6b56a0239d Improve handling of assertions on static properties 2019-12-11 14:06:09 -05:00
Brown
d2b99cbe77 Add possibly defined vars in binary op analysis 2019-12-11 13:09:27 -05:00
Brown
e476eed111 Fix issue where inside_conditional is forgotten 2019-12-11 12:06:10 -05:00
Brown
2f9b1ff665 Fix too-long line 2019-12-11 11:40:47 -05:00
Brown
e564d67214 Add support for simple default arrays in @method docblocks
Fixes #2455
2019-12-11 11:29:00 -05:00
Brown
79f3a5d371 Allow empty string parsing 2019-12-11 10:52:46 -05:00
Brown
3a7dd61889 Fix #2457 - allow psalm-type aliases to be used above return type 2019-12-11 10:30:40 -05:00
Brown
4b715cdbff Fix #2456 - ignore UnusedFunctionCall when function asserts 2019-12-11 10:13:22 -05:00
Matthew Brown
c27d0d953b Add null check 2019-12-11 00:38:28 -05:00
Matthew Brown
848cbbb487 Fix #2454 - build up template map to better understand passed-through data 2019-12-11 00:34:54 -05:00
Brown
2e322ee214 Don’t try to fix missing trait method params
Fixes #2427
2019-12-10 17:32:39 -05:00
Brown
b3cf9d3958 Catch circular references in constants
Fixes #2453
2019-12-10 16:16:44 -05:00
Brown
20049eb0b5 Fix #2437 - don’t worry about mixed templated param types 2019-12-10 14:58:26 -05:00
Brown
9d22f56560 Fix #2443 - templates are not valid PHPDoc 2019-12-10 14:03:51 -05:00
Brown
423288d2fe Fix negations of templated numeric 2019-12-10 10:55:24 -05:00
Matthew Brown
a3ab8e8973 Fix dumb 2019-12-10 09:47:17 -05:00
Matthew Brown
3faf1f8bc2 Improve int assertions 2019-12-10 09:44:38 -05:00
Matthew Brown
750d4b4f4f Be more accurate when assertion is incorrect
Ref #2452
2019-12-10 09:26:46 -05:00
Matthew Brown
8494f02008 Fix template handling when templating inside templated class 2019-12-10 00:50:36 -05:00
Brown
af63f87689 Fix dumb; 2019-12-09 17:42:22 -05:00
Brown
c8d8244e73 Fix copy/paste snafu 2019-12-09 17:35:50 -05:00
Brown
74de32fefe Allow multiple @psalm-assert annotations for a given variable 2019-12-09 17:21:58 -05:00
Brown
aaffdbc79f Add support for non-empty scalar
Ref #2449
2019-12-09 17:06:10 -05:00
Teemu Koskinen
447e3539af ssh2-functions can return false on error, added missing parameters (#2447)
Source: http://git.php.net/?p=pecl/networking/ssh2.git;a=tree
2019-12-09 14:50:55 -05:00
Brown
b78acf796f Fix #2445 - only generalise param when it’s generic 2019-12-09 10:58:09 -05:00
Brown
40bdc219ff Add more info for too many params error 2019-12-09 10:31:00 -05:00
Matthew Brown
517aaac851 Fix #2432 - narrow template type after is_object check 2019-12-08 21:40:15 -05:00
Matthew Brown
432c291dd7 Fix #2440 - add support for uasort 2019-12-08 21:30:19 -05:00
Matthew Brown
d6a731be73 Fix #2441 - add error when @template type is missing 2019-12-08 21:19:29 -05:00
Matthew Brown
e3d108ebd9 Fix #2439 - fix templating of class-string<T>::returnsStatic 2019-12-08 21:12:25 -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
02fbf12337 Only warn about clauses in the currently-scanned conditional 2019-12-08 16:35:56 -05:00
Matthew Brown
6236a30bf5 Add broken test 2019-12-08 13:02:38 -05:00
Matthew Brown
c9f43782fd Fix mixed method issues after defining new type 2019-12-08 10:17:40 -05:00
Matthew Brown
83b10bb9af Fix #2426, or at least some of it 2019-12-08 00:49:34 -05:00
Matthew Brown
2e00ad2240 Treat more things as assignments 2019-12-07 15:58:05 -05:00
Matthew Brown
f0cd7eab04 Remove redundant calls 2019-12-07 14:05:43 -05:00
Philip Hofstetter
528180998e fix return type of stream_bucket_new (#2434)
the function returns `object` since 2003 in
php/php-src@c4a491e12c and
`stream_bucket_append()` is type hinted to take `object` too.

This fixes #2430
2019-12-07 14:04:18 -05:00
Matthew Brown
3c52102388 Fix #2438 - improve handling of get_class calls 2019-12-07 14:03:20 -05:00
Matthew Brown
2b6831ba10 Fix too-long line 2019-12-07 01:38:24 -05:00
Matthew Brown
df395944f8 Change how $changed_var_ids is communicated 2019-12-07 01:23:35 -05:00
Brown
ef44bd104e Consolidate some fixes from the binaryop branch 2019-12-06 12:47:27 -05:00
Brown
19838fc7f5 Fix #2423 - pass by ref variable status after byref assignment 2019-12-05 13:37:03 -05:00
Brown
8ff33ee64d Fix #1943 - give up analysing really complicated conditionals 2019-12-05 10:26:53 -05:00
Tyson Andre
b713066d32 Add an exception handler that prints full exception trace (#2418)
By default, php will only print the first few thousand bytes of the
exception, for an uncaught exception
(I think that's the default, and not just my configuration)

Instead, print all of the parts of the exception.

For #1083 (this PR does not cover set_error_handler)
2019-12-04 23:17:08 -05:00
Tyson Andre
6b2c1401c8 Workaround for uncaught InvalidArgumentException (#2420)
Fixes #2419
2019-12-04 23:16:51 -05:00
Tyson Andre
4548fb87f7 Add space for 'can automatically fix Nissues' (#2416) 2019-12-04 16:16:37 -05:00
Jon Ursenbach
284565811c feat: organizing the --help screen (#2417) 2019-12-04 16:16:03 -05:00
Brown
a3e51d6f13 Fix resolution for class names in lazily-evaluated class constants
Fixes #2413
2019-12-04 13:33:50 -05:00
Brown
3a5bb9db9a Add slash 2019-12-04 12:29:06 -05:00
Brown
e1dd22ef6c Allow static::class to be used in array assertions 2019-12-04 12:23:26 -05:00
Brown
d5f5c742ce Fix #2411 - allow use of covariant params in array returned value 2019-12-04 10:49:07 -05:00
Matthew Brown
d9cae720c1 Add slash 2019-12-03 08:33:31 -05:00
Matthew Brown
016fd58547 Add command in help 2019-12-03 02:18:44 -05:00
Matthew Brown
aa4daea182 Add extra safety feature 2019-12-03 01:59:36 -05:00
Matthew Brown
97de060df9 Fix #2279 - add parameter typehint by default 2019-12-03 01:49:43 -05:00
Matthew Brown
dd05f6e3ca Speed up missing property type consolidation 2019-12-03 00:57:26 -05:00
Matthew Brown
9f69d9ac99 Add CI_BRANCH var 2019-12-03 00:44:19 -05:00
Matthew Brown
a35d5f1308 Add temporary logging 2019-12-03 00:36:26 -05:00
Matthew Brown
843c08b8e1 Add emojis 2019-12-03 00:33:14 -05:00
Matthew Brown
71f16859fb Add Github Repo parsing 2019-12-03 00:26:19 -05:00
Matthew Brown
946a46a761 Log when data is sent successfully 2019-12-03 00:13:46 -05:00
Matthew Brown
6fa3d3df51 Add a little more logging 2019-12-03 00:08:04 -05:00
Matthew Brown
f667dee4f5 More logging 2019-12-03 00:06:00 -05:00
Matthew Brown
260b73ce78 More logging 2019-12-02 23:59:01 -05:00
Matthew Brown
35eb0900df Add some temporary logging 2019-12-02 22:26:17 -05:00
Brown
821f3528d2 Fix #701 - indicate issues fixable with Psalter 2019-12-02 15:24:01 -05:00
Brown
a7565bc4b0 Fix stubs casing 2019-12-02 15:23:19 -05:00
Matthew Brown
5fe3a4a5a9 Fix #2368 - don’t register class-file mapping
Sometimes it’s not a real class there, just a class_alias call
2019-12-01 23:47:36 -05:00
Matthew Brown
d5f4c24ee0 Fix combining class string types with explicit ones 2019-12-01 23:03:09 -05:00
Matthew Brown
ee6bf74a41 Add isset check 2019-12-01 22:15:50 -05:00
Matthew Brown
afbd04a1dc Add slash 2019-12-01 19:20:05 -05:00
Matthew Brown
526aa000ef Set git data from Github Actions 2019-12-01 19:16:21 -05:00
Matthew Brown
e47f5e774b Send more info from shepherd 2019-12-01 17:20:26 -05:00
Matthew Brown
a82ed91a00 Fix build 2019-12-01 17:18:07 -05:00
Matthew Brown
0bc6d71173 Add some tracing when using GitHub Actions in CI 2019-12-01 16:49:08 -05:00
Matthew Brown
27c9aa4286 Fix code and test 2019-12-01 10:43:51 -05:00
Matthew Brown
f21150b8ad Fix #2384 - fix resolution of @param-out template types 2019-12-01 10:40:53 -05:00
Matthew Brown
ef829002bf Fix ref 2019-12-01 10:33:27 -05:00
Matthew Brown
e40aaafe61 Allow explicit @var mixed docblocks
Fixes #2397
2019-12-01 10:19:42 -05:00
Bruce Weirdan
f36766bf99 Improve CoreGenericClasses (#2402)
- general formatting
- Better definition for iterator class for `ArrayObject`
- Better definition for callable parameters to `ArrayObject`/`ArrayIterator` `uksort`/`uasort`
- Fixed signature for `ArrayIterator::current()`
- Fixed signature for `DOMNodeList::item()`
2019-12-01 09:53:48 -05:00
Matthew Brown
4e07779497 Allow callable-string to be used for callable 2019-12-01 01:15:14 -05:00
Matthew Brown
088228f119 Fix template default type issue 2019-11-30 12:54:08 -05:00
Matthew Brown
b1e8c386fd Remove unused function 2019-11-30 12:39:17 -05:00
Matthew Brown
a8c2b7a525 Fix #2400 - string should subsume class-string 2019-11-30 12:32:31 -05:00
Matthew Brown
04879af105 Be less forgiving when extending builtin generic classes 2019-11-30 09:32:21 -05:00
Matthew Brown
952484c64d Add workaround for pcre.jit bug 2019-11-30 08:26:26 -05:00
Matthew Brown
0fa654e011 Suppress issue 2019-11-30 01:30:55 -05:00
Matthew Brown
6ff06a4b32 Don’t bypass generator second arg when checking variance 2019-11-30 01:27:27 -05:00
Matthew Brown
8f8301b6de Align Generator covariance with PHPStan 2019-11-30 01:11:50 -05:00
Matthew Brown
d134482ee7 Fix style 2019-11-30 01:06:48 -05:00
Matthew Brown
1b9273c8c0 Make other Generator params covariant 2019-11-30 01:02:51 -05:00
Matthew Brown
baef67e0d8 Fix evaluation order of covariant template params before invariant ones 2019-11-30 01:02:23 -05:00
Matthew Brown
c65540a323 Fix some templating issues in CoreGenericClasses 2019-11-30 00:27:07 -05:00
Matthew Brown
ccd6718582 Fix templating of objects with properties 2019-11-29 22:57:45 -05:00
Matthew Brown
2383945fb9 Support __METHOD__ and __FUNCTION__ magic constants better 2019-11-29 22:47:20 -05:00
Matthew Brown
1e3ecb5fd0 Fix #2387 - ensure docblock return types are checked 2019-11-29 11:20:37 -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
a4e18f9b5e Fix #2386 - make generator params invariant 2019-11-29 01:44:31 -05:00
Alfred Bez
e2d1eca2b4 fixed RarArchive signatures (#2385) 2019-11-29 01:22:36 -05:00
Bruce Weirdan
377e47c8bd Added WeakReference support (#2389) 2019-11-29 01:21:38 -05:00
Bruce Weirdan
33142e7637 Use unalised trait name when importing aliased trait (#2393)
Fixes vimeo/psalm#2392
Refs vimeo/psalm#2278
2019-11-29 01:21:00 -05:00
Matthew Brown
4052e6dfac Allow isset to check for property initialisation
Ref #2382
2019-11-28 09:12:17 -05:00
Valentin Udaltsov
4a742f9940 Added array_key_first and array_key_last stubs (#2381) 2019-11-27 10:59:12 -05:00
Matthew Brown
113bf921f6 Add support for arrow function inference 2019-11-27 10:12:59 -05:00
Matthew Brown
a154191922 Fix #2380 - prevent string docblock for callable param 2019-11-27 09:18:47 -05:00
Matthew Brown
4334ddcaa3 Fix style 2019-11-27 02:11:18 -05:00
Matthew Brown
3f2d57c7a3 Fix #2379 - support spread array RFC 2019-11-27 02:07:17 -05:00
Matthew Brown
1b850c4026 Skip descendants if required class in && expr cannot be found
Fixes #2375
2019-11-27 00:44:41 -05:00
Matthew Brown
c75f7dc4d5 Fix #2339 - add support for null coalescing operator 2019-11-27 00:34:23 -05:00
Matthew Brown
d1c4c85f97 Support covariant return types & contravariant param types
Fixes #2102 and #2264
2019-11-27 00:19:36 -05:00
Matthew Brown
2c08321603 Ignore union types for now 2019-11-27 00:00:46 -05:00
Matthew Brown
d1fbd1fa26 Add working arrow-functions implementation 2019-11-26 23:52:26 -05:00
Brown
90cb3f4472 Speed up accessing node data
Ref #1837
2019-11-26 17:48:47 -05:00
Brown
f97a8f0d5b Use more accurate way to determine list size 2019-11-26 16:34:19 -05:00
Pavel Batečko
4e594e0a65 Improve array function list handling (#2377)
* array_column() returns a list unless the 3rd arg is passed

* array_pad() return type provider

* array_chunk() return type provider

* array_map() preserve list types
2019-11-26 14:48:49 -05:00
Brown
2f02da62c1 Add note to future self 2019-11-26 14:47:07 -05:00
Lars Strojny
9d32273029 Fix typo in InfiniteIterator type definition (#2378) 2019-11-26 14:20:40 -05:00
Brown
7ccd73b5e3 Fix redundant condition 2019-11-26 12:32:07 -05:00
Brown
842b2a53df Refine lists with object-like array types
Fixes #2357
2019-11-26 12:22:28 -05:00
Brown
532e2d64be Allow using covariant template in mutation-free context 2019-11-26 11:35:03 -05:00
Brown
736ccd84cd Allow more generic iterable when yielding
Fixes #2353
2019-11-25 16:12:44 -05:00
Brown
5626058eff Fix #2374 - refine error-suppressed output a little better 2019-11-25 15:38:54 -05:00
Brown
1f07ea7ee7 Tighten up Psalm’s inference 2019-11-25 15:20:31 -05:00
Brown
95f7a389e1 Remove dud file 2019-11-25 13:09:06 -05:00
Brown
96c4eeec98 When calling magic method clone node info 2019-11-25 13:08:38 -05:00
Brown
ae10e6c130 Add polyfill for spl_object_id 2019-11-25 12:50:48 -05:00
Brown
1add42b691 Fix switch handling 2019-11-25 11:51:34 -05:00
Brown
0bcb7863f3 Use better system for storing inferred types and assertions 2019-11-25 11:44:54 -05:00
Takefumi Katsuren
da489d4b27 imagepng accepts resource at Argument 2 (#2373) 2019-11-24 20:15:05 -05:00
Tyson Andre
6bc152e2da Use the long progress bar for CI logs (#2364) 2019-11-22 08:56:18 -05:00
Brown
78a3894403 Fix Psalm errors 2019-11-21 11:03:18 -05:00
Brown
06653f6322 Fix #2362 - support single value type in docblocks 2019-11-21 10:44:24 -05:00
Matthew Brown
4c2f7ad8db Add slash 2019-11-21 09:06:19 -05:00
Matthew Brown
2b1b0f6c34 Return 0 2019-11-21 09:02:56 -05:00
Matthew Brown
3d9c94e29a Fix #2363 - catch possible class not found errors when getting method 2019-11-21 08:56:47 -05:00
Bruce Weirdan
c50a17d415 Scan shape properties (#2359)
This prevents crashes when built-in classes are referenced by shape
properties.

Fixes vimeo/psalm#2331
2019-11-18 19:01:12 -05:00
Brown
81f513bb4c Fix #2358 - always analyse new XXX(...) in unknown method calls 2019-11-18 16:14:21 -05:00
Matthew Brown
e76beffa78 Fix #2355 - don’t remove used variables 2019-11-17 14:53:08 -05:00
Matthew Brown
dade56e4e1 Fix #2354 - add option to match documentation 2019-11-17 14:49:28 -05:00
Tyson Andre
ecf3abc396 Fix redundant condition (#2338)
TGenericObject is always a TNamedObject
2019-11-17 14:29:38 -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
4747ba709a Migrate more things 2019-11-15 15:34:25 -05:00
Brown
5e17a9af10 Fix #2348 - ensure all functions and methods return some type 2019-11-14 14:44:29 -05:00
Brown
b3a15e8016 Fix #2349 - allow suppression of InvalidReturnType for no-return 2019-11-14 14:33:07 -05:00
Brown
d5b90f6887 Fix #2333 - don’t create array after empty check 2019-11-14 14:23:33 -05:00
Brown
8777c952c8 Fix #2330 - allow empty checks against numeric 2019-11-14 13:31:50 -05:00
Brown
09aafa40c0 No exception when file has issues 2019-11-14 12:54:35 -05:00
Brown
738ce4f850 Fix re-added function storage removal 2019-11-14 12:17:17 -05:00
Brown
b693b726c7 Improve handling of default extended params 2019-11-14 12:12:09 -05:00
Brown
70b8df268d Fix template covariance calculation, use container covariance not inputs 2019-11-14 11:43:49 -05:00
Brown
939be92f29 Fix stubbing in end-to-end tests 2019-11-14 11:03:41 -05:00
Brown
a5c3304853 Add support for if replacement 2019-11-14 11:03:16 -05:00
Matthew Brown
8154a9ef16 Fix #2340 - don’t stub functions unnecessarily 2019-11-14 09:27:19 -05:00
Matthew Brown
5fabf41c8e Check for not-callable return value 2019-11-14 07:57:22 -05:00
Matthew Brown
0b1f83ff98 Fix #2346 - map covariance of templated return types when extending with more params 2019-11-14 07:45:20 -05:00
Brown
00be4c2071 Mark var as unused 2019-11-13 15:06:22 -05:00
Brown
fe5e675881 Improve unvariable removal 2019-11-13 15:05:21 -05:00
Brown
c9e7dcfa92 Fix false positive UnusedVariable 2019-11-13 14:32:27 -05:00
Brown
7516b7b0cf Fix #2336 - detect used variable in mixed array offset 2019-11-13 13:38:34 -05:00
Brown
4be3180512 Add more impure functions 2019-11-13 13:22:04 -05:00
Matthew Brown
975ff9250b Fix #2328 - don’t crash on unexpected divider 2019-11-13 01:13:29 -05:00
Brown
7b719915f5 Fix style things 2019-11-12 10:21:27 -05:00
Brown
25b60eb944 Fix #2325 - ignore unused vars with $_ prefix 2019-11-12 10:20:34 -05:00
Brown
7f5af741f7 Improve assertion calculation on mixed vars 2019-11-12 10:12:07 -05:00
Matthew Brown
7012bedf4e Fix #2326 - substitute static more responsibly in generic objects 2019-11-12 08:01:22 -05:00
Matthew Brown
b1aae0d1a5 Fix more try/catch stuff 2019-11-12 00:52:10 -05:00
Brown
51557c44ea Evaluate finally blocks at the end of every catch 2019-11-11 18:38:33 -05:00
Brown
da03902f76 Fix handling of do... while vars defined in try 2019-11-11 18:24:43 -05:00
Brown
f22266b2ff Improve reasoning around try/catch possibly-undefined vars 2019-11-11 17:42:46 -05:00
Brown
1a54aa5752 Fix test 2019-11-11 17:07:26 -05:00
Brown
cd2f8e7d65 Fix memory corruption 2019-11-11 16:56:44 -05:00
Brown
935bad9d2c Fix erroneous unused variable 2019-11-11 16:52:55 -05:00
Brown
d15989c975 Allow catch to assume no try statements completed 2019-11-11 15:17:53 -05:00
Brown
658f86c277 Fix #2324 - avoid fatal error on self string in callable 2019-11-11 14:59:05 -05:00
Brown
fbd1cf0a71 Fix #2322 - don’t update outer context if elseif has no leaving statements 2019-11-11 11:46:27 -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
Brown
46d163996e Fix #2321 - prevent inferred template coercion 2019-11-11 09:14:34 -05:00
Bruce Weirdan
79acbadfad Added InvalidParent issue (#2320)
Refs vimeo/psalm#2304
2019-11-11 00:21:43 -05:00
Matthew Brown
2fc7f5fdf7 Fix #1830 - infer key type after array_key_exists check 2019-11-10 14:23:53 -05:00
Matthew Brown
94d4b876ba Fix #2177 - mark variables in try block as potentially undefined 2019-11-09 12:25:30 -05:00
Matthew Brown
62a3598ed3 Fix #2197 - prevent false positive from try in while 2019-11-09 11:01:48 -05:00
Matthew Brown
7028a64440 Fix #2204 - fix try/catch false-positive 2019-11-09 10:39:21 -05:00
Brown
4e5af3490a Fix #2315 - allow Traversable->iterable templated casting 2019-11-08 13:11:01 -05:00
Brown
895737d8be Fix style 2019-11-08 12:49:53 -05:00
Brown
ac6256e645 Fix #2312, improve understanding of template replacement 2019-11-08 11:56:41 -05:00
Joram Schrijver
c97ba8f713 Implement type-checking and forbidding for print (#2314)
* Add type-checking for print

* Allow print to be forbidden
2019-11-08 07:01:34 -05:00
Joram Schrijver
e79a0cc8f0 Make --init use vendor-dir from composer.json (#2313) 2019-11-08 06:59:04 -05:00
Baptiste Clavié
5217156068 Support comments in ErrorBaseline (#2311) 2019-11-07 13:03:18 -05:00
Brown
3d7b34e7f6 Fix #2273 - ensure all template params are bound 2019-11-07 11:03:41 -05:00
Brown
3cf16c8ef3 Add back arg 2019-11-07 09:56:27 -05:00
Brown
86b6801066 Fix #2294 - detect invalid callble due to __invoke 2019-11-07 09:39:24 -05:00
Brown
64996f464e Prevent empty array workaround to #2308 2019-11-06 16:59:08 -05:00
Brown
06b64a4a01 Detect erroneous use of empty check on bools 2019-11-06 16:14:46 -05:00
Brown
3e98c800ec Fix #2309 - prevent closure-inferred generic template params overwriting parent ones 2019-11-06 13:13:02 -05:00
Brown
a8ed6ba9c4 Fix #2308 - prevent specialisation from bound params 2019-11-06 11:20:51 -05:00
Matthew Brown
d7e435c352 Add slashes 2019-11-05 19:08:16 -05:00
Matthew Brown
050045209f Only allow string offset assignment when offset is integer 2019-11-05 19:05:43 -05:00
Matthew Brown
cbaf050bd2 Fix #2307 - allow setting of array string offset 2019-11-05 19:03:59 -05:00
Matthew Brown
b81a2d3852 Fix #2306 - allow nullable templated params to be compared to null 2019-11-05 18:37:46 -05:00
Brown
818f0c0985 Flesh out list types
Fixes #2300
2019-11-05 13:08:12 -05:00
Brown
5c8cb37b0f Fix #2301 - do a naive projection of template params 2019-11-05 12:59:56 -05:00
Brown
d8ae33957d Fix strtolower ref 2019-11-04 15:14:07 -05:00
Brown
1f42843d42 Fix #2296 - use case insensitive closure ids 2019-11-04 14:48:02 -05:00
Brown
4bf632bc23 Only extend covariant flag to vars without template param 2019-11-04 11:12:59 -05:00
Brown
4f9cf54005 Use unaliased name for external hook 2019-11-04 10:13:12 -05:00
Brown
e7330afe8b Fix #2295 - support special case of array_shift on known offset type 2019-11-04 09:21:13 -05:00
Matthew Brown
8dffd65a59 Preserve possible-undefinedness 2019-11-04 07:12:22 -05:00
Matthew Brown
5faebe2674 Fix templated assertion handling for static methods 2019-11-04 05:31:45 -05:00
Matthew Brown
8f421dc0bb Refactor template calculation out from Psalm\Type\Union 2019-11-03 21:27:40 -05:00
Matthew Brown
7c4c78f67e Fix #2271 - treat array_replace same as array_merge 2019-11-02 10:15:03 +01:00
Pavel Batečko
b229ac875d Improve return types of explode() with limit (#2286) 2019-11-02 10:10:38 +01:00
Matthew Brown
a82e35a59f Fix #2291 - extended covariant template param types should be treated as covariant 2019-11-01 18:25:07 +01:00
Matthew Brown
bab7e46983 Fix #2281 - allow lists to accept list types 2019-11-01 13:35:16 +00:00
Matthew Brown
050eb82f04 Fix #2290 - detect call on void type 2019-11-01 13:05:28 +00:00
Jáchym Toušek
f2c82fa212 Add support for Iterator<X> type (#2285)
* Add support for Iterator<X> type

* Fix tests
2019-10-30 18:00:27 +00:00
Matthew Brown
4845bbbd49 Improve solution to extended type juggling 2019-10-29 19:30:19 +00:00
Matthew Brown
8d7cdeb8ec Fix #2275 - allow extended templated types to bypass mixed type coercion rules 2019-10-29 10:07:34 +00:00
Tyson Andre
f40fe86321 Properly warn when a short option is invalid. (#2280)
Previously, Psalm would not warn or exit - it would skip over the arg and
continue with analysis.
2019-10-29 08:55:34 +00:00
Matthew Brown
0ac5c32f2f Fix #2277 - scan psalm-assert types always 2019-10-25 23:39:33 +02:00
Brown
8876499ddd Fix #2252 - allow destructuring of ArrayAccess objects 2019-10-22 11:17:42 -04:00
Brown
353cf2351e Fix #2259 - if error suppression is use, list destructuring values will be nullable 2019-10-22 10:40:37 -04:00
Mikko Pesari
e82d3c438d Fix wrong annotations in ext-ds method stubs (#2263)
* Fix wrong annotation for class implementing an interface

* Fix unrecognised annotations
2019-10-22 09:33:23 -04:00
Joram Schrijver
39b25f9008 Fix ArrayIterator::{uasort,uksort} parameter type (#2254) 2019-10-22 08:45:25 -04:00
Mikko Pesari
fc16eb5e92 Fix Ds\Set method stubs (#2261)
* Fix constructor parameters

* Add missing @param name

* Add missing implements
2019-10-22 06:12:35 -04:00
Brad Kent
6e6eea010b callMap updates: unregister_tick_function, ReflectionClass::getInterfaceNames, ReflectionObject::getInterfaceNames (#2258) 2019-10-21 14:29:48 -04:00
Mikko Pesari
80665850db Add method stubs for Ds\Set (#2255)
* Fix typo

* Add method stubs for Ds\Set
2019-10-21 10:06:26 -04:00
Matthew Brown
233977a764 Fix undefined array offset when too few iterator params supplied 2019-10-21 07:13:33 -04:00
Tyson Andre
94636476d2 Fix checking if union type with mixed is nullable (#2253)
Fixes #2249
2019-10-20 17:06:59 -04:00
Matthew Brown
05ace25817 Fix #2246 - fix return type of array_slice to be a list 2019-10-20 16:19:01 -04:00
Matthew Brown
b476761109 Fix #2235 - improve behaviour of array_merge on lists 2019-10-20 15:47:00 -04:00
Matthew Brown
1d6ca9bd7d Allow callable-array type in docblocks 2019-10-20 15:33:57 -04:00
Matthew Brown
4aeb28aceb Fix #2244 - correctly check do while expression before use 2019-10-20 14:18:30 -04:00
Matthew Brown
3bb0016434 Fix #2251 - add support for yielding from lists 2019-10-20 12:09:04 -04:00
Matthew Brown
22e35a7233 Improve message for mixed method call 2019-10-20 11:13:23 -04:00
Matthew Brown
0a35c9cd6a Remove unnecessary computation 2019-10-19 23:03:59 -04:00
Matthew Brown
5910a362ea Improve report output of taint analysis 2019-10-19 17:59:10 -04:00
Brown
8978e5c7f1 Add sink for print_r 2019-10-18 15:28:15 -04:00
Brown
2be489c527 Fix regression when identifying clauses in error 2019-10-18 15:06:37 -04:00
Brown
89752b8574 Support ext-ds and fix offset count 2019-10-18 11:35:24 -04:00
Brown
dda68228f3 Fix #2247 - don’t crash when yielding from class with too many template params 2019-10-18 11:01:16 -04:00
lhchavez
216f991b0c Normalize stringified type names (#2239)
This change makes stringified types more normalized. Concretely it sorts
all union types, reconciled types, and sorts the keys within object-like
types.
2019-10-17 01:14:33 -04:00
Matthew Brown
e8618371fb Refine isset checks 2019-10-17 01:09:21 -04:00
Matthew Brown
54a31f8cff Be more scrupulous about mixed vars 2019-10-17 00:29:51 -04:00
Matthew Brown
29902c8b99 Fix #2237 - suppress reconciling issues when inherited clauses couldn’t be resolved into types 2019-10-16 21:55:11 -04:00
Brown
d52d9b6552 Fix #2234 - treat continuous assertions on interfaces as redundant 2019-10-16 18:43:03 -04:00
Matthew Brown
7b522af169 Provide necessary typehint 2019-10-15 20:41:06 -04:00
Matthew Brown
9115ffd237 Fix #2215 - refine closure type if it doesn’t clash 2019-10-15 20:34:41 -04:00
Brown
b29227aaf6 Allow taints to be removed via annotation 2019-10-15 16:25:27 -04:00
Brown
22a12444df Fix #2220 - detect destructuring of non-array 2019-10-15 13:55:30 -04:00
Brown
aa5d82d30d Fix #2228 - load functions defined on traits included in a class 2019-10-15 12:09:08 -04:00
Brown
5e649f684c Fix erroneous return type resolution 2019-10-14 17:10:30 -04:00
Matthew Brown
3dc96edf08 Update file references again 2019-10-13 23:37:15 -04:00
Matthew Brown
477fa8cba8 Set file references before they’re used 2019-10-13 23:30:01 -04:00
Matthew Brown
a0d484a314 Reduce duplicate calls 2019-10-13 22:05:16 -04:00
Matthew Brown
8c6b234c2c Improve speed of taint analysis 2019-10-13 20:10:31 -04:00
Matthew Brown
e1e2ff3e57 Improve shuffling 2019-10-13 20:09:50 -04:00
Matthew Brown
7e76d3386d Fix phpcs issues 2019-10-13 12:38:16 -04:00
Matthew Brown
3c00f3d029 Limit taint file re-analysis 2019-10-13 12:34:40 -04:00
Matthew Brown
cd8534fb6c Shuffle file analysis order for more even threaded workload distribution 2019-10-13 12:33:18 -04:00
Matthew Brown
d0a9bf24f8 Void-returning functions are going to be impure 2019-10-13 09:51:25 -04:00
2e3s
a658566429 Add impure functions for mcrypt and iterator_apply (#2227) 2019-10-13 09:43:25 -04:00
Matthew Brown
7e2d00d6ed Allow taints to be added to root array types 2019-10-12 12:23:40 -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
5918278af3 Fix cache growth thanks to array_recursive 2019-10-11 20:17:07 -04:00
Brown
09cf864d9b Mark preg_replace_callback as sometimes-pure 2019-10-11 13:54:33 -04:00
Brown
3f837a3493 Fix #2192 - allow static return value on templated object 2019-10-11 12:02:41 -04:00
Matthew Brown
7857b07f91 Fix list-could-be-array issue 2019-10-11 08:24:35 -04:00
Matthew Brown
1a1b3a10a9 Fix #2225 - iterator_to_array can return a list 2019-10-10 23:47:11 -04:00
Matthew Brown
0556f28a9f Fix #2224 - make sure literal strings are put into appropriate arrays when templating 2019-10-10 23:38:57 -04:00
Matthew Brown
c419e0e798 Fix #2222 - check for @throws docblock inheritance 2019-10-10 22:44:21 -04:00
Matthew Brown
03c39cbe7c Fix #2223 - make sure lists are handled in more places 2019-10-10 20:16:43 -04:00
Brown
3658771bff Fix #2221 - variadic args are lists 2019-10-10 17:46:20 -04:00
Brown
67b32f463e Support assertions on lists 2019-10-10 10:57:43 -04:00
Brown
99c91efbc6 Add support for reconciling callable lists 2019-10-10 10:34:31 -04:00
Brown
cc9a925e84 Allow list to be coerced to callable 2019-10-10 10:26:13 -04:00
Brown
a05f4744cb Only show taint issues when tracking tainted input 2019-10-09 14:26:32 -04:00
Brown
50e729a6d1 Fix more list issues 2019-10-09 13:42:39 -04:00
Brown
e822ec7541 Unsetting list elements should turn to an array 2019-10-09 12:49:31 -04:00
Brown
54d5a25077 Remove known array offsets after altering array 2019-10-09 10:36:55 -04:00
Brown
b75720c32b Add more list types 2019-10-09 10:04:34 -04:00
Brown
0b0534d41b Add more list annotations to Psalm’s codebase 2019-10-09 09:17:43 -04:00
Matthew Brown
10b0be3650 Fix explode 2019-10-09 07:44:26 -04:00
Matthew Brown
c7600fde10 Fix #2217 - interpret callable self return type references properly 2019-10-09 07:40:42 -04:00
Matthew Brown
51cfd556d6 Add non-empty-list support 2019-10-08 22:53:55 -04:00
Matthew Brown
6a07757b9a Fix tests 2019-10-08 22:41:23 -04:00
Matthew Brown
d7007c3b76 Fix casing 2019-10-08 22:25:15 -04:00
Matthew Brown
38de68f507 array_values should preserve array non-emptiness 2019-10-08 22:22:58 -04:00
Matthew Brown
5cdc3aa6d4 Remove tautological statement 2019-10-08 21:39:28 -04:00
Matthew Brown
2ae76bbc8e Prohibit objectlike to list 2019-10-08 21:38:01 -04:00
Matthew Brown
e620c2cfa4 Fix issue creating empty array offsets 2019-10-08 21:23:16 -04:00
Brown
db33efb3e8 Fix another bad comma 2019-10-08 19:13:04 -04:00
Brown
23fcbec584 Add a few more list types 2019-10-08 19:06:16 -04:00
Brown
2d4a7fbe3e Fix array fetch analysis offset 2019-10-08 19:01:00 -04:00
Brown
573b6bfe67 Remove bad comma 2019-10-08 18:51:44 -04:00
Brown
16c33d1565 Add support for list type
Fixes #2209
2019-10-08 18:44:46 -04:00
Brown
c7eff18481 Add basic type classes for TList 2019-10-08 18:43:54 -04:00
Brown
5265aee278 Process reconciliation more aptly 2019-10-08 14:33:06 -04:00
Brown
6b012f8fa6 Use smarter type merging when analysing if statements 2019-10-08 13:07:28 -04:00
Brown
f175050837 Fix #2214 - use better way for marking types as changed 2019-10-07 16:59:05 -04:00
Guuzen
50df2868f2 Fix issue #2201 (#2212) 2019-10-06 15:28:41 -04:00
bugreportuser
064d4886c3 Track exception suppressions (#2211) 2019-10-04 14:01:58 -04:00
Brown
94001aad4a Fix #2208 - handle templated property types appropriately 2019-10-04 13:51:36 -04:00
Jay Klehr
27961045a0 allowing null as type for mysqli real_connect for host and passwd parameters (#2210) 2019-10-04 13:07:28 -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
60214ab0c7 Allow assertions on arbitrary offsets without isset 2019-10-03 18:40:47 -04:00
Brown
ebe8bedb20 Allow assertions on class constants 2019-10-03 18:13:04 -04:00
Brown
ca06277f30 Add better support for previous key types 2019-10-03 15:43:17 -04:00
Brown
549aee47f1 Fix bug asserting array emptiness 2019-10-03 15:27:55 -04:00
bugreportuser
d8855282c6 Add more impure functions (#2203) 2019-10-03 15:01:31 -04:00
Brown
9b31483018 Fix unused var 2019-10-02 09:35:22 -04:00
Matthew Brown
24977fb021 Fix small bug 2019-10-02 01:17:45 -04:00
Bruce Weirdan
1d9a4cd53e Show errors in progress bar when --ignore-baseline is specified (#2195)
Refs vimeo/psalm#2190
2019-10-01 20:28:42 -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
Brown
f8f8b633b1 Suppress a bunch of PossiblyUndefinedArrayOffset issues 2019-10-01 15:44:43 -04:00
Matthew Brown
9f10564184 Add another array addition check 2019-10-01 09:13:31 -04:00
Fabien Villepinte
e7faf81223 Fix the arguments order of rar_entry_get() (#2189) 2019-10-01 08:47:56 -04:00
Matthew Brown
95c7b986c2 Fix formatting 2019-10-01 08:46:37 -04:00
Matthew Brown
2ffdf1bacc Fix undefined numeric offset 2019-10-01 08:45:36 -04:00
Matthew Brown
f8a2eae0e2 Fix #2186 - use expanded class name for aliased class 2019-09-30 22:15:48 -04:00
Matthew Brown
a9d0296252 Fix #2182 - allow modification to cloned objects inside 2019-09-30 22:07:20 -04:00
Matthew Brown
0f7925e769 Fix #2183 - evaluate return after do with break inside 2019-09-29 16:12:52 -04:00
Matthew Brown
14adc9b491 Fix phpcs 2019-09-29 16:04:32 -04:00
Matthew Brown
4ec22cffca Fix #2184 - execute __invoke methods explicitly 2019-09-29 16:01:33 -04:00
Matthew Brown
9af8a9ac38 Fix #2181 - prevent class template types being wiped by anonymous class use 2019-09-27 12:58:32 -04:00
Matthew Brown
81464d8dbf Fix #2179 - add gz* to list of impure functions 2019-09-27 09:50:33 -04:00
Matthew Brown
c3e781c4a0 Turn on unused code detection in Psalter for UnnecessaryVarAnnotation 2019-09-27 09:22:06 -04:00
Matthew Brown
cbc142671d Fix #2175 - support late-resolved empty arrays 2019-09-27 09:05:56 -04:00
Brown
4823ec54d4 Add slashes 2019-09-26 17:12:57 -04:00
Brown
4ff3a5517d Fix typo 2019-09-26 17:12:57 -04:00
Brown
4ec966d72a Fix variable 2019-09-26 15:53:41 -04:00
Brown
73eb71bada I think I understand strpos/strrpos a little better now 2019-09-26 15:31:56 -04:00
Brown
4832aa6075 Fix incorrect location for substitution 2019-09-26 15:22:33 -04:00
Brown
cf799d0926 Fix #2173 - remove @var annotations automatically 2019-09-26 15:08:05 -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
2fa0e05802 Fix #2169 - always use most immediate function storage when analysing 2019-09-25 18:48:41 -04:00
Brown
5e47cda6e5 Fix #2170 - allow @method annotations to override inherited immutable ones 2019-09-25 17:39:32 -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
2d621f185a Fix #2166 - inherit twice from docblocks 2019-09-25 12:02:59 -04:00
Matthew Brown
56d250777e Add back interface complaint 2019-09-22 20:42:31 -04:00
Matthew Brown
3205d1b752 Fix #2158 - loose equality should not imply equivalence 2019-09-22 10:54:17 -04:00
Matthew Brown
80059f9139 Scrub inferred mutation-free when method is overridden 2019-09-22 09:40:08 -04:00
Matthew Brown
add051c2be Enforce immutability constraints only on interface methods 2019-09-22 09:26:26 -04:00
Matthew Brown
3d84518eab Fix closure usage in Psalm code 2019-09-22 01:03:42 -04:00
Matthew Brown
a5f79353ed Fix #2157 - don’t merge closures and callable params 2019-09-22 00:58:30 -04:00
Matthew Brown
9c629414a7 Fix #2138 - complain when inheriting from immutable interfaces without annotation 2019-09-21 22:52:30 -04:00
Matthew Brown
340b7b9752 Fix phpcs issue 2019-09-21 21:53:39 -04:00
Matthew Brown
0ae04c9743 Fix #2148 - support arrays properly 2019-09-21 21:50:11 -04:00
Matthew Brown
264131c211 Fix #2121 - no internal error on funk assertion syntax 2019-09-21 21:22:31 -04:00
Matthew Brown
ae46c9e132 Fix #2114 - make builtin constructors mutation free 2019-09-21 21:07:27 -04:00
Matthew Brown
fdbea45534 Fix #2159 - only apply elseif conditions to vars that exist in main context 2019-09-21 16:58:31 -04:00
Matthew Brown
d387a1966c Fix array_slice return type 2019-09-21 15:50: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
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
c5ef2516b5 Fix #2150 - add detection for unnecessary @var annotations
And also remove them from codebase
2019-09-19 11:59:43 -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
Brown
0ac9108814 Fix #2139 - allow comprehension of constant ternaries 2019-09-17 11:29:41 -04:00
Brown
6423a5e68a Fix #2145 - complain make byref params passed to closures mixed afterwards 2019-09-16 18:42:44 -04:00