1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-11 00:39:38 +01:00
Commit Graph

311 Commits

Author SHA1 Message Date
Matthew Rardon
9c91912281 Fix ftp_fget/_fput/_nb_fget/_nb_fput arg types 2022-03-28 11:38:18 -04:00
Ciaran McNulty
0b39384325 Add return shape for Throwable::getTrace
This is based on the documentation for debug-backtrace:
   https://php.net/debug_backtrace

Experimentation that shows the `object` field is not populated for exceptions:
   https://3v4l.org/iQoni

And validation on psalm.dev:
   https://psalm.dev/r/b35a8df2f3
2022-03-18 09:14:23 +00:00
Jack Worman
88f9e19acd #7784 PDOStatement::fetchAll() has incorrect type 2022-03-14 14:11:31 -05:00
Ne-Lexa
a57bb1f128 fix #7747: DateInterval::createFromDateString can be false 2022-03-05 22:37:55 +03:00
orklah
0fe6eaf5d9 Merge remote-tracking branch 'upstream/4.x' into upstream-master13 2022-02-26 21:26:59 +01:00
orklah
3a85f49268
Merge pull request #7673 from VincentLanglet/pdoException
PDOException extends RuntimeException and can use int code errors
2022-02-23 13:45:57 +01:00
Vincent Langlet
694157b2e0 PDOException extends RuntimeException and can use int code errors 2022-02-14 21:04:10 +01:00
Bruce Weirdan
edddc87002
Merge branch '4.x' into upstream-master 2022-02-13 07:14:23 +02:00
Chloé Kekoa
092f729e46 Correct name of ErrorException::__construct $line param 2022-02-13 01:19:33 +01:00
Bruce Weirdan
11e60fa261
Merge branch '4.x' into upstream-master 2022-02-11 03:51:48 +02:00
Marco Pivetta
fabcda16b4 Ensure trait_exists() always returns bool
Fixes #7478

As discussed in the upstream issue, `trait_exists()` always returns `bool`: while
it can return `null` when the arguments passed to it do not match (either no arguments, or
3 or more arguments), we do not support that scenario, as that already doesn't respect the
type signature of this function.

We cut to the point: always make it `bool`, which is the scenario that works under healthy
operational conditions.

Ref: https://github.com/Roave/BetterReflection/pull/983#discussion_r790908170
Ref: https://psalm.dev/r/c41a43805d
Ref: https://github.com/vimeo/psalm/issues/7478#issuecomment-1020330351
Ref: https://github.com/vimeo/psalm/issues/7478#issuecomment-1020337712
Ref: https://3v4l.org/XpHmh
2022-02-01 16:51:09 +01:00
Bruce Weirdan
963b41d317
Merge branch '4.x' into upstream-master 2022-01-30 00:32:12 +02:00
orklah
9168cef2d4 Merge remote-tracking branch 'upstream/4.x' into upstream-master6 2022-01-26 21:06:25 +01:00
Kevin van Sonsbeek
5a1ddf5e2d Fixed the return type in the callmap 2022-01-25 23:13:04 +01:00
Fabien Villepinte
6bf34b5b97 Add missing parameter to Phar::getMetadata() 2022-01-25 21:35:27 +01:00
orklah
841d4f4429 improve support for enum_exists 2022-01-22 18:27:24 +01:00
orklah
af1888b631 Merge remote-tracking branch 'upstream/4.x' into upstream-master4 2022-01-22 17:48:42 +01:00
Matthias Wirtz
5b23a0c51e
in array form all attributes are nullable since PHP 7.3 2022-01-22 15:34:16 +01:00
Matthias Wirtz
bb577ec271
change nullable for array signature to be equal to param signature 2022-01-22 15:26:26 +01:00
Alberto Piai
9b22d63c5b
fix proc_open stub for php >= 8.0
The argument names are defined here:

https://github.com/php/php-src/blob/PHP-8.0.0/ext/standard/basic_functions_arginfo.h#L1773-L1780
2022-01-20 13:57:34 +01:00
Rishi Kumar Ray
5e277d4060 Fix Incomplete return type for mb_split() function 2022-01-19 18:07:06 +05:30
5c3d9fd659
Fix kafka stubs 2022-01-19 10:14:09 +01:00
orklah
477c0113c2 Merge remote-tracking branch 'upstream/4.x' into upstream-master3 2022-01-18 18:37:04 +01:00
orklah
a0f52eae2f
Merge pull request #7407 from villfa/fix/7039
Improve signature of DOMDocument::loadXML()
2022-01-18 00:01:00 +01:00
Fabien Villepinte
c9eafa15ad Improve signature of DOMDocument::loadXML() 2022-01-17 22:52:58 +00:00
Ricardo Boss
26dd4c5b8f
Try to provide literal int types when possible (fixes #6966) (#7071)
* Fixed vimeo/psalm#6966

* Only accept >= 0 values for mode argument in round()

* Made round() only return float or literal float values and remove unneeded test

* Registered RoundReturnTypeProvider

* Updated cast analyzer to handle single string literal int values as literal ints

* Fixed psalm errors

* Fix invalid property accesses

* Addressed comments

* Added Tests

* Marked RoundReturnTypeProvider as internal

* Fixed CS
2022-01-16 21:33:04 +01:00
Fabien Villepinte
642321ea70 Improve signature of random_bytes() 2022-01-16 14:47:42 +01:00
Bruce Weirdan
f9e6ff39fa
Merge pull request #7347 from VincentLanglet/dir 2022-01-09 00:14:28 +02:00
Vincent Langlet
c03154390a Fix dir 2022-01-08 21:49:45 +01:00
Ricardo Boss
dc0e82f6bc Updated return type of iterator_count and iterator_apply functions to 0|positive-int 2022-01-07 12:36:07 +01:00
Rudolph Gottesheim
ed4c22044a uniqid() returns a non-empty-string 2022-01-03 11:51:36 +01:00
Matthias Wirtz
309d1a4634
add samesite option here as well 2021-12-27 09:46:58 +01:00
Francois Botha
014e678e97 MySqli: some parameters are nullable 2021-12-20 16:00:25 +02:00
orklah
646ba983a0
Merge pull request #7140 from yethee/soap
Fixed compatibility with SoapClient
2021-12-15 00:55:57 +01:00
orklah
2cd7b19ee3
Merge pull request #7145 from villfa/fix/ldap_set_rebind_proc
Fix ldap_set_rebind_proc signature
2021-12-15 00:49:50 +01:00
orklah
41fe5534b6
Merge pull request #7159 from AndrolGenhald/bugfix/number-format-optional-arguments
Fix optional arguments in number_format (fixes #7158).
2021-12-15 00:47:35 +01:00
AndrolGenhald
10b6b9aef0 Fix optional arguments in number_format (fixes #7158). 2021-12-14 09:10:05 -06:00
orklah
a51d16150d fix CI 2021-12-13 23:35:48 +01:00
yethee
3a574fe072
Update signatures for SoapFault 2021-12-13 22:14:09 +03:00
Fabien Villepinte
3bd9bbddc7 Fix ldap_set_rebind_proc signature 2021-12-13 11:06:31 +01:00
yethee
0897714964
Update signatures of methods of SoapClient 2021-12-12 19:43:06 +03:00
Kamil Tekiela
88ce10b1dc Fix count_chars stubs 2021-12-07 21:31:05 +00:00
Bruce Weirdan
142ee57836
Refine *strlen() return type to exclude negative integers
Fixes vimeo/psalm#7062
2021-12-05 03:57:36 +02:00
Kamil Tekiela
b854f436ff Improve count_chars stub 2021-12-04 20:56:17 +00:00
orklah
396ff967e0
Merge pull request #7042 from kamil-tekiela/get_class
get_class does not return false
2021-12-02 13:12:36 +01:00
orklah
90d421635d
Merge pull request #7030 from ostrolucky/rediscluster-getoption
Fix RedisCluster::getOption() and RedisCluster::setOption() argument types
2021-12-02 07:45:36 +01:00
Kamil Tekiela
19062e56a3 get_class does not return false
Technically all functions could return false or null when a wrong parameter is provided, but that was undefined behavour in PHP <8 and should not be relied upon.
2021-12-01 21:36:13 +00:00
orklah
d7d4b37ac1 year in getdate can be before 1970 for negative timestamps 2021-12-01 20:18:25 +01:00
Bruce Weirdan
28c4f86993
Merge pull request #7027 from rarila/issue-6914 2021-11-30 23:34:00 +02:00
Gabriel Ostrolucký
7b78a7e64c
Fix RedisCluster::getOption() and RedisCluster::setOption argument types
See aac42cd335/redis_cluster.stub.php (L122)

Related https://github.com/vimeo/psalm/pull/6853
2021-11-30 21:22:48 +01:00
orklah
ea03410645 refine getdate array structure 2021-11-30 21:18:10 +01:00
orklah
02b35ccada
Merge pull request #7023 from orklah/abs
refine abs return type
2021-11-29 21:20:26 +01:00
orklah
9f918a8314 refine abs return type 2021-11-29 21:16:51 +01:00
ralila
2c94ce0185 Adjust callmaps 2021-11-29 14:23:57 +01:00
Bruce Weirdan
5197a68192
Merge pull request #6987 from pilif/fix-openssl-open-callmap 2021-11-29 08:13:23 +02:00
Philip Hofstetter
323b74b8d8
fix all openssl_* signatures for PHP >= 8.0
while some signatures were already updated in the past, many others were
not.

This commits fixes all signatures to match what the PHP manual
specifies.
2021-11-29 06:21:42 +01:00
Kamil Tekiela
020c5f0d15 Fix mysqli_fetch_fields stub 2021-11-28 22:43:34 +00:00
Kamil Tekiela
84079d1833 More specific array return types 2021-11-28 22:43:34 +00:00
Kamil Tekiela
f7aa5ea4b9 Expand mysqli_fetch_array 2021-11-28 11:15:34 +00:00
Kamil Tekiela
0f22bc4c18 mysqli_fetch_* functions return mixed values 2021-11-28 10:54:07 +00:00
Bruce Weirdan
41256c74d1
Added enum-related stubs and callmaps
Fixes vimeo/psalm#6430
2021-11-28 11:41:43 +02:00
Kamil Tekiela
b44c16bc68 Fix signatures of gmstrftime and strftime 2021-11-27 22:55:34 +00:00
Kamil Tekiela
c4c97d3018 Stub fixes for mysqli extension
Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
2021-11-24 22:21:56 +00:00
orklah
e13c48a719
Merge pull request #6927 from veewee/soap-stub-response
Invalid SoapClient::__doRequest() response type
2021-11-22 21:23:42 +01:00
Thomas Gerbet
84d327678b usleep(0) is valid
Similar to ef9858c458.

usleep() only throws the value is < 0:
```
Uncaught ValueError: usleep(): Argument #1 ($microseconds) must be greater than or equal to 0
```
2021-11-22 11:58:39 +01:00
Benjamin Morel
ef9858c458 sleep(0) is valid 2021-11-22 09:47:34 +01:00
Ciaran McNulty
c91e245074 Update data types of file_put_contents
The main aim is to exclude boolean false, which could be coerced into '' in the following cases:

```
file_put_contents('outfile', file_get_contents('invalid_file')); // false instead of string
file_put_contents('outfile', fopen('invalid_file', 'r')); // false instead of resource
file_put_contents('outfile', file('invalid_file')); // false instead of array
```
2021-11-21 20:57:45 +00:00
MallardDuck
8292967ec4 Update crypto to use object-like array 2021-11-20 23:56:29 -05:00
MallardDuck
25cd14fe12 correct callmaps for stream_get_meta_data return 2021-11-20 12:16:22 -05:00
Kamil Tekiela
9f0441fcd9 Update callmap 2021-11-16 12:00:58 +00:00
Toon Verwerft
df1947922f Invalid SoapClient::__doRequest() response type 2021-11-15 14:18:34 +01:00
ralila
8dee0476da Fix mb_convert_encoding to accept any array. 2021-11-13 20:06:49 +01:00
Toon Verwerft
b72da42dd1 Remove invalid SoapClient::__doRequest stub 2021-11-13 10:27:48 +01:00
575fd1c55a
Small fixes 2021-11-11 12:05:03 +01:00
290002c045
Small fix 2021-11-08 17:26:42 +01:00
ed6f8e0dd7
Use positive integers for various time functions 2021-11-08 17:26:39 +01:00
Bruce Weirdan
d844eabdfa
Merge pull request #6846 from jirkace/openssl_sign_callmap_php80_fix
Fixed callmap for function openssl_sign, it changed in PHP 8.0 (modif…
2021-11-08 12:53:40 +02:00
blackie
8fde59f885 fixup! fixup! Fixed callmap for function openssl_sign, it changed in PHP 8.0 (modified types for param private_key) #6842 2021-11-08 08:07:10 +01:00
Bruce Weirdan
703312278f
Merge pull request #6853 from jirkace/rediscluster_setoption_argument_types 2021-11-08 00:11:29 +02:00
blackie
e96bb7823c fixup! Fixed callmap for function openssl_sign, it changed in PHP 8.0 (modified types for param private_key) #6842 2021-11-07 20:36:26 +01:00
blackie
a6b91384c1 RedisCluster::setOption() argument types incorrect #4708 2021-11-07 16:45:28 +01:00
blackie
cb9bf8b5af Fixed docblock for newInstanceArgs for PHP 8.0 #5136 2021-11-07 16:16:23 +01:00
blackie
d5a5db12a2 Fixed callmap for function openssl_sign, it changed in PHP 8.0 (modified types for param private_key) #6842 2021-11-07 01:44:00 +01:00
S.M. Ataur Rahman
bcc3023ac9 callmap updated as mysqli __construct()/connect() return bool in php 8.1 2021-11-03 22:02:24 +06:00
S.M. Ataur Rahman
52265d926f parameters of mysqli __construct()/connect() are nullable in php 8.0 2021-11-03 21:56:31 +06:00
S.M. Ataur Rahman
a391de6ab4 added mysqli::connect() to callmap 2021-11-03 21:41:45 +06:00
Alexey Borzov
ae4294f61d Reverted parameter names for '1 signatures, removed unneeded '1 signatures 2021-10-29 18:34:00 +03:00
Alexey Borzov
a96b93a1e3 Batch 2: checked all the signatures against PHP docs and ext/pgsql code 2021-10-29 02:22:55 +03:00
Alexey Borzov
629100aa23 Batch 1: fix 8.1 return values for query execution methods and pg_lo_open() 2021-10-28 19:44:56 +03:00
Paolo L. Scala
f445ef7dd1 Updated openssl_pkey_get_private function signature
Fixes #6469
2021-10-27 16:18:30 +02:00
Semercom
a9d921e9c0 issue-6737: fix CallMap imagecropauto() arguments 2021-10-25 21:29:18 +03:00
Tomas Norre Mikkelsen
b39b523fb4 Convert pgsql functions to use object instead of a resource 2021-10-14 19:30:03 +02:00
Valentin Udaltsov
910258b44c Added optional offsets 3 and 4 to PDO::errorInfo and PDOStatement::errorInfo 2021-10-10 13:48:52 +03:00
Valentin Udaltsov
e7dd53d4d1 Refined PDO::errorInfo, PDOStatement::errorInfo
See https://www.php.net/manual/ru/pdo.errorcode.php and https://www.php.net/manual/ru/pdostatement.errorinfo.php.
2021-10-09 22:09:10 +03:00
Ishan Vyas
bdb494563e
chore: remove FiberExit class from Fiber stubs
Signed-off-by: Ishan Vyas <isvyas@gmail.com>
2021-10-09 12:31:52 +05:30
Ishan Vyas
e917546801
feat: Add Fiber stubs
Signed-off-by: Ishan Vyas <isvyas@gmail.com>
2021-10-08 23:27:48 +05:30
Manuel VACELET
d561b29e4d ReflectionClass::getReflectionConstants has a filter parameter
It was introduced in php 8.0.

Fixes #6588
2021-10-05 14:15:28 +02:00
Tomas Norre Mikkelsen
960af957db Convert PSpell resources to objects 2021-10-04 13:41:31 +02:00
Tomas Norre Mikkelsen
4b8f212ab8 Fix incorrect parameters names 2021-10-04 12:58:03 +02:00
Tomas Norre Mikkelsen
993349d64d Convert LDAP resources to objects 2021-10-04 12:57:12 +02:00
orklah
73495d73e4
Merge pull request #6567 from tomasnorre/imap-rosource-to-object
Convert imap functions to use object instead of a resource
2021-10-04 00:35:04 +02:00
orklah
246f8173e0
Merge pull request #6566 from tomasnorre/fileinfo-resource-to-object
Convert finfo functions to use object instead of a resource
2021-10-04 00:34:48 +02:00
Ishan Vyas
79270c01fd
chore: make changes in CallMap.php file
Signed-off-by: Ishan Vyas <isvyas@gmail.com>
2021-10-03 22:32:17 +05:30
Tomas Norre Mikkelsen
232ebb7e57 Convert imap functions to use object instead of a resource 2021-10-02 11:58:08 +02:00
Tomas Norre Mikkelsen
518e18f128 Convert finfo functions to use object instead of a resource 2021-10-02 10:16:42 +02:00
Sergei Predvoditelev
31763b3628 Fix fopen 2021-09-30 17:12:54 +03:00
Paweł Słowik
096a6dbe5c Remove undocumented / untested XlsWriter methods 2021-09-28 17:56:20 +02:00
Paweł Słowik
e1727ffe22 Update XlsWriter signatures 2021-09-28 17:56:20 +02:00
Paweł Słowik
2e51a9a8a7 Permit null user_agent to get_browser() 2021-09-17 16:46:27 +02:00
Semyon
5c375cb3c0 Revert mb_str_split return signature to list<string> 2021-09-16 15:27:34 +03:00
ssnepenthe
655c000009 Update return type for xdebug_get_profiler_filename()
Returns false when profiler is not active, string otherwise
2021-09-14 13:45:23 -07:00
Christopher Bray
847f1e41e7 Make imageavif arguments optional 2021-09-08 09:17:06 +01:00
Christopher Bray
46f7a56e13 Add imageavif to CallMap 2021-09-07 22:07:02 +01:00
Christopher Bray
1bc6a231e0 Add imagecreatefromavif to CallMap 2021-09-07 22:03:31 +01:00
Bruce Weirdan
d17f1bd7b3
Merge pull request #6447 from brayniverse/master 2021-09-07 05:26:25 +03:00
Bruce Weirdan
5535ea1ac0
$column parameter is optional 2021-09-07 03:02:25 +03:00
Christopher Bray
ba84c990dd Add mysqli_fetch_column to CallMap 2021-09-06 22:34:25 +01:00
50bhan
58e1e6b9a3 Add an optional $options argument to hash functions for PHP 8.1 2021-09-07 01:44:35 +04:30
S.M. Ataur Rahman
5ec5f7d3db introducing fsync & fdatasync functions in callmap 2021-09-07 00:24:32 +06:00
Bruce Weirdan
e3e667653a
Merge pull request #6435 from SMAtaurRahman/php8.1 2021-09-06 17:27:17 +03:00
S.M. Ataur Rahman
b6e7a77e5a introducing mysqli execute() method parameter callmap change for php 8.1 2021-09-06 19:33:58 +06:00
Nicolas Giraud
9df0edbbab Force array_walk to not infer input type. 2021-09-06 15:15:25 +02:00
Bruce Weirdan
36dfeed774
Converted ftp functions to use link object instead of a resource
Fixes vimeo/psalm#6403
2021-09-04 23:44:57 +03:00
orklah
9cd8917b88 create callmap for 8.1 and introduce array_is_list 2021-09-04 13:25:23 +02:00
Bruce Weirdan
cbcc38aab8
Merge pull request #6339 from niconoe-/allow-object-on-array_walk 2021-08-31 23:45:10 +03:00
ThomasLandauer
630529740c Fixing null for openssl_x509_parse() 2021-08-29 12:33:19 +02:00
ThomasLandauer
2210003c98 Fixing openssl_x509_parse() and openssl_x509_read() Closes #6358 2021-08-29 00:04:04 +02:00
Pol Dellaiera
f0d54128b6 Update return type of getInnerIterator which is always returning an iterator. 2021-08-24 15:27:02 +02:00
Nicolas Giraud
e254ebf5d5 Allow object type to be given to array_walk and array_walk_recursive. 2021-08-19 12:03:06 +02:00
Benjamin Morel
621c4dd8d1 Enforce class-string in is_subclass_of() 2021-08-17 23:14:11 +02:00
Vincent Langlet
1cdad83630 Remove false if length is positive int 2021-08-17 17:47:22 +02:00
Vincent Langlet
786d926d78 str split return non empty 2021-08-17 11:03:54 +02:00
Marc Ole Bulling
1818609f43 Fix for #6318 2021-08-16 19:23:10 +02:00
Bruce Weirdan
babfb6a637
Fix histories 2021-08-16 02:52:18 +03:00
Bruce Weirdan
cc1335022f
Fix SimpleXMLIterator historic and current signatures
Historically, `SimpleXMLIterator` had only implemented `Iterator` and
`RecursiveIterator` methods. This changed in 8.0, when iterator methods
were moved to `SimpleXMLElement`, and `SimpleXMLIterator` was made a
dummy class extending `SimpleXMLElement`.

Fixes vimeo/psalm#6305, in the sense that Psalm would no longer report
different errors depending on the runtime PHP version.
2021-08-16 00:04:59 +03:00
Valentin Udaltsov
8b60ebebcf Refined debug_backtrace return type 2021-08-09 10:43:33 +03:00
Maurício Meneghini Fauth
1bc71522fb
Fix wrong return type for imagejpeg GD function
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2021-08-08 14:57:17 -03:00
Bruce Weirdan
66056e391b
Restored some callmap types 2021-08-08 19:50:16 +03:00
bjscharp
4997208ee7 Merge branch 'master' into callmap-delta-inconsistencies
# Conflicts:
#	dictionaries/CallMap_80_delta.php
2021-08-05 22:03:32 +02:00
bjscharp
ac5ea252ff Added test to detect problems and inconsistencies in CallMap files
- Fixed inconsistencies in callmap delta files (mainly 8.0)
- Added several missing changes in the bc_* functions
- Added several missing changes in the mb_* functions
- Added several missing changes in the xml_parser_* functions
- Fixed several issues with sodium_ functions
- Removed all but one of the date_* functions. All were marked as having lost the option to return false, despite this only being true for date_format
2021-08-05 19:07:31 +02:00
Mason McElvain
b2ba774cb9 Update CallMap with PHP 8 date() signature 2021-08-04 15:27:32 -07:00
Bruce Weirdan
e34a0e39d6
s/limit/length/ 2021-08-01 16:35:09 +03:00
bjscharp
e779387b9a Added missing mb_str_split function from 7.4 2021-08-01 15:12:07 +02:00
Bruce Weirdan
f952f1b616
exec() may fail
Fixes vimeo/psalm#6195
2021-07-28 13:38:49 +03:00
Bruce Weirdan
7aa5564047
Merge pull request #6192 from orklah/array_replace_not_nullable
make array_replace and array_replace_recursive not nullable
2021-07-28 00:20:46 +03:00
orklah
d9df3211c5 make array_replace and array_replace_recursive not nullable 2021-07-27 23:02:41 +02:00
Vincent Langlet
47fa2724d7 Add false as return type of shell_exec
The doc is only talking about string|null, but
false is possible when the pipe can't be etablished
@see https://github.com/php/php-src/pull/7306#issuecomment-886489235
2021-07-26 11:08:20 +02:00
Bruce Weirdan
6eee971109
Detailed signature for fputcsv and friends
Fixes vimeo/psalm#5226
2021-07-21 00:42:36 +03:00
Bruce Weirdan
a29cbd3c95
More callmap fixes
* `writeDtdEntity()`/`xmlwriter_write_dtd_entity()` has optional params
* `xmlwriter_write_attribute_ns` has `$namespace` param as nullable, not
`$content`
* `xmlwriter_write_element()`/`xmlwriter_write_element_ns()` has
`$content` param as optional
2021-07-17 23:37:32 +03:00
Arnout Boks
08a80dd238
Fix main callmap should contain newest signatures
https://github.com/vimeo/psalm/pull/6099#discussion_r671556027
2021-07-17 22:29:56 +03:00