Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge 5.x #11164

Merged
merged 161 commits into from
Nov 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
739d87d
Use wider class-string when combining class strings with intersections
weirdan Mar 9, 2024
005e318
Merge pull request #10800 from weirdan/10799-use-wider-classstring
weirdan Mar 9, 2024
00c2fef
Forbid named arguments for ArrayAcccess methods
weirdan Mar 9, 2024
c511185
Merge pull request #10804 from weirdan/10533-no-named-arguments-for-a…
weirdan Mar 10, 2024
20c7889
Allow more callable types as subtypes of `callable`
weirdan Mar 10, 2024
4a2cf93
Don't crash on invalid templates
weirdan Mar 11, 2024
ae1d510
Merge pull request #10806 from weirdan/9596-dont-crash-on-invalid-tem…
weirdan Mar 11, 2024
2a91bd6
Added test for #10807
SCIF Mar 11, 2024
fe42e88
Resolve fail test #10807
issidorov Mar 11, 2024
8471a89
Merge pull request #10812 from issidorov/bug-10807
weirdan Mar 11, 2024
4ea41cb
Merge branch '5.23.x' into 5.x
weirdan Mar 11, 2024
c9468b6
Introduce `TCallableInterface`
weirdan Mar 12, 2024
debffec
add support for named arguments for filter_var and filter_input
pilif Mar 13, 2024
9c5af0f
Promoted properties missing in extended __construct should report Pro…
kkmuffme Mar 13, 2024
a2307ac
report error for single param too since named args can even be used then
kkmuffme Mar 13, 2024
c174e35
Fix https://github.com/vimeo/psalm/issues/7550
kkmuffme Mar 13, 2024
c7fc76e
MissingClassConstType
jack-worman Mar 14, 2024
ad87c2e
Allow specifying flags to Codebase::isTypeContainedByType
danog Mar 15, 2024
b431e5f
cs-fix
danog Mar 15, 2024
431977c
[PHP 8.4] Fixes for implicit nullability deprecation
Ayesh Mar 15, 2024
ff168a9
Fix undefined parent not reported in callable
kkmuffme Mar 16, 2024
8815463
fix tests running with other than called PHP binary if called with a …
kkmuffme Mar 19, 2024
e8e1f47
Merge pull request #10842 from kkmuffme/fix-tests-using-other-than-ca…
danog Mar 19, 2024
ea825c6
Explicitly set value in config to fix warning in tests
kkmuffme Mar 19, 2024
8efbf38
fix bad class
kkmuffme Mar 19, 2024
45d9fbe
Merge pull request #10843 from kkmuffme/fix-psalm-6-notice-in-tests-c…
danog Mar 19, 2024
644ef8d
Merge pull request #10832 from Ayesh/php84/nullability
weirdan Mar 19, 2024
4b7957b
Merge pull request #10829 from vimeo/isTypeContainedByType_flags
weirdan Mar 19, 2024
f61c7e1
Merge pull request #10805 from weirdan/10461-allow-more-callable-type…
weirdan Mar 19, 2024
a59248f
self, parent and static in callable are deprecated since PHP 8.2
kkmuffme Mar 16, 2024
e83530a
report invalid callable if callable cannot be called like this from c…
kkmuffme Mar 19, 2024
e3d5526
Merge pull request #10838 from kkmuffme/undefined-parent-not-reported…
weirdan Mar 20, 2024
c5adc51
Merge pull request #10824 from kkmuffme/update-misc-deprecated-arg-ty…
weirdan Mar 20, 2024
98eab1f
Merge pull request #10822 from kkmuffme/report-param-name-mismatch-fo…
weirdan Mar 20, 2024
2c1ac98
Merge pull request #10815 from pilif/filter_var-named-args
weirdan Mar 20, 2024
3a1b10f
Merge pull request #10828 from jack-worman/MissingClassConstType
weirdan Mar 20, 2024
9cfce37
ParamNameMismatch not reported for __construct
kkmuffme Mar 13, 2024
cc5ad67
Merge pull request #10821 from kkmuffme/consistent-constructor-param-…
weirdan Mar 20, 2024
86173d2
When inside isset, array fetch can return null
edsrzf Feb 26, 2024
30e797b
Update baseline
edsrzf Feb 28, 2024
4b707d1
Additional array fetch test case
edsrzf Mar 4, 2024
70530d6
Merge pull request #10756 from edsrzf/array-isset
weirdan Mar 20, 2024
b47449f
Merge pull request #10817 from kkmuffme/promoted-properties-not-set-i…
weirdan Mar 20, 2024
375fe32
Update tests/CallableTest.php
weirdan Mar 20, 2024
4266a8e
Merge pull request #10839 from kkmuffme/misc-class-callable-errors-no…
weirdan Mar 20, 2024
2f90881
Update CallMap.php
ThomasLandauer Mar 21, 2024
2ae91aa
Update CallMap_historical.php
ThomasLandauer Mar 21, 2024
63ea4de
Merge pull request #10847 from ThomasLandauer/patch-1
weirdan Mar 21, 2024
3e493d9
Specified array return type of session_get_cookie_params
jorgsowa Mar 21, 2024
1b91f56
add tests for int-like string array keys
kkmuffme Mar 12, 2024
120e312
fix tests
kkmuffme Mar 22, 2024
6030995
separate fix of https://github.com/vimeo/psalm/pull/10481 to a reusab…
kkmuffme Mar 22, 2024
cd302f0
further improve string-int juggling handling which was previously alr…
kkmuffme Mar 22, 2024
1bfa684
scientific and underscore notation should be quoted too, since they w…
kkmuffme Mar 23, 2024
85ff673
Merge pull request #10814 from kkmuffme/int-string-keys-arrays-are-int
weirdan Mar 23, 2024
7128f0d
Fix storage not available in thread for intersection doc types
Mar 24, 2024
fb7278e
Merge pull request #10856 from simonberger/patch-10739
weirdan Mar 25, 2024
6269b80
Don't emit MissingOverrideAttribute for implicit Stringable implement…
edsrzf Mar 25, 2024
c5fc82c
Define historical definitions of session_get_cookie_param
jorgsowa Mar 25, 2024
dee88f5
Merge pull request #10858 from edsrzf/handle-stringable-override
weirdan Mar 25, 2024
4b01704
Merge pull request #10859 from jorgsowa/specify-array-return-of-sessi…
weirdan Mar 25, 2024
c8f0671
document that @psalm-internal works for namespace + class too
kkmuffme Mar 27, 2024
eaeb979
Merge pull request #10866 from kkmuffme/document-psalm-internal-names…
weirdan Mar 28, 2024
db7bdd8
Fix https://github.com/vimeo/psalm/issues/10880
kkmuffme Apr 6, 2024
7d6c88e
Merge pull request #10885 from kkmuffme/unknown-psalm-annotation-shou…
orklah Apr 6, 2024
3496ea1
Add XML functions to ImpureFunctionsList
DKhalil Apr 8, 2024
98ecec6
Ignore jsonSerialize for implementors of JsonSerializable
josephwynn-sc Apr 9, 2024
e93ecbe
Throw exception instead of silently logging issues occurred during scan
danog Apr 11, 2024
683f63b
Kill all children before throwing
danog Apr 11, 2024
9e4c2a6
Fix
danog Apr 11, 2024
463c7dc
Fix psalm
danog Apr 11, 2024
83069ff
cs-fix
danog Apr 11, 2024
3dea282
Fix conditional on non empty literal string
VincentLanglet Apr 18, 2024
aa6a01a
Add `mail` to impure functions list
smaddock Apr 27, 2024
2e84721
Merge pull request #10923 from smaddock/add-`mail`-to-impure-function…
orklah Apr 28, 2024
81e4b97
Merge pull request #10912 from VincentLanglet/conditionalNonEmptyLiteral
orklah Apr 28, 2024
8fcb6b4
Merge pull request #10891 from josephwynn-sc/json-serialize-should-be…
orklah Apr 28, 2024
7fe1005
Merge pull request #10902 from danog/throw_on_scan_issues
orklah Apr 28, 2024
718bdf3
Merge branch '5.x' into patch-2
orklah Apr 28, 2024
c631102
Merge pull request #10887 from DKhalil/patch-2
orklah Apr 28, 2024
4b10905
Fix literal-string|non-empty-literal-string
VincentLanglet Apr 29, 2024
7587749
Update PHP 8.2 Call map delta with refined types for string compariso…
gsteel Apr 5, 2024
462c80e
Merge pull request #10883 from gsteel/strnatcasecmp
orklah May 1, 2024
3643ff7
redis: add possible types for `Redis#auth` method
boesing May 2, 2024
0776d8c
Avoid false positive about non-callable
VincentLanglet May 3, 2024
0bc6969
Fix
VincentLanglet May 3, 2024
3b512ce
Fix
VincentLanglet May 3, 2024
e97dbab
Feedback
VincentLanglet May 3, 2024
5bb9ebf
Casting int-range should keep literals
kkmuffme May 3, 2024
3708807
Fix-GH-10933-And-GH-10951
jack-worman May 4, 2024
7552679
Merge pull request #10953 from jack-worman/Fix-GH-10933-And-GH-10951
weirdan May 5, 2024
5ff68d6
qa: remove `SensitiveParameter` from `Redis##auth` stub
boesing May 5, 2024
0b37d26
Merge pull request #10934 from boesing/qa/redis-types
weirdan May 5, 2024
08ea062
Merge pull request #10935 from VincentLanglet/fix-array-callable
weirdan May 5, 2024
10956df
Merge pull request #10930 from VincentLanglet/literalStringUnion
weirdan May 5, 2024
0294324
Merge pull request #10941 from kkmuffme/cast-int-range-keep-literals
weirdan May 5, 2024
8c90f17
Up the minimum version of nikic/php-parser to 4.17
chesn0k May 8, 2024
71a1ae5
Precise preg_match_all return type
VincentLanglet May 8, 2024
a926499
Add support for phpstan-pure
VincentLanglet May 15, 2024
58af0eb
Use non deprecated notation
VincentLanglet May 29, 2024
fbf07db
up-to-date output-format list
llaville Jun 2, 2024
c4c674b
up-to-date report list
llaville Jun 2, 2024
bce59cf
fix psalm errors
llaville Jun 2, 2024
d77790b
Merge pull request #11000 from llaville/dynamic-help-text
orklah Jun 4, 2024
ca2c0d3
Improve mysql fetch_field* return type
MoonE Jun 7, 2024
22379c7
Fix signature of Locale::canonicalize.
ADmad Jun 8, 2024
c8a0d5e
Fix signature for Locale::canonicalize()
ADmad Jun 10, 2024
626efd5
Update test
ADmad Jun 10, 2024
2fa66e0
Merge pull request #11010 from ADmad/patch-2
weirdan Jun 10, 2024
af088f9
Merge pull request #10975 from VincentLanglet/phpstanPure
weirdan Jun 15, 2024
8af77f0
Feedback
VincentLanglet Jun 16, 2024
01a8eb0
Merge pull request #10969 from VincentLanglet/preg_match_all
weirdan Jun 16, 2024
7c53c9d
Add mysqli.execute-query as sink for TaintedSql
cgocast Jun 21, 2024
85e75c4
Check for `psalm.dist.xml` as well
HypeMC Jun 28, 2024
76ba7c6
Change `ReflectionParameter::getName()` result type to `non-empty-str…
vjik Jul 6, 2024
d50c93e
Merge pull request #11037 from vjik/reflection-parameter-get-name
weirdan Jul 6, 2024
dd24f5b
Merge pull request #11021 from cgocast/5.x
orklah Jul 16, 2024
183db41
Fix mysqli_get_client_version
kamil-tekiela Aug 17, 2024
3e1165d
Fix mysqli_real_escape_string stub
kamil-tekiela Aug 20, 2024
2cbd8b0
Creating Success Regression Tests
issidorov Aug 21, 2024
bdd3641
Creating Fail and Fail-Like Tests
issidorov Aug 21, 2024
3cf1942
Resolve Fail Test
issidorov Aug 21, 2024
0b83d3f
Deleting Fail-Like Test
issidorov Aug 21, 2024
cf148ac
Add TaintedCallable sinks for 4 core generic functions
cgocast Sep 6, 2024
3ff52fb
Merge pull request #11090 from cgocast/core_function_sinks
weirdan Sep 7, 2024
4324122
Merge pull request #11078 from kamil-tekiela/mysqli_real_escape_string
weirdan Sep 7, 2024
10a987b
Merge pull request #11074 from kamil-tekiela/mysqli_get_client_version
weirdan Sep 7, 2024
c2bdb40
Merge pull request #11009 from MoonE/mysqli-fetch-field
weirdan Sep 7, 2024
3c13a5b
Merge pull request #11031 from HypeMC/check-for-psalm.dist.xml-as-well
weirdan Sep 7, 2024
2a64d1c
Merge pull request #10968 from chesn0k/chesn0k-patch-1
weirdan Sep 7, 2024
b6cea6e
Fix callable/lowercase strings coercion
weirdan Sep 7, 2024
8b528ad
Merge pull request #11091 from weirdan/callable-and-lowercase-strings…
weirdan Sep 7, 2024
4787eaf
Merge pull request #11081 from issidorov/regression-tests-with-undefi…
weirdan Sep 8, 2024
bb57f39
Fix JSON formatter crashes with invalid UTF in error messages
weirdan Sep 8, 2024
d747f65
Merge pull request #11092 from weirdan/fix-invalid-utf8-output-in-jso…
weirdan Sep 8, 2024
3e78a20
Fix the tests broken when running with Paratest
weirdan Oct 12, 2024
0f796f1
Merge pull request #11122 from weirdan/fix-paratest
weirdan Oct 12, 2024
be04deb
Fix usage of a <-> an in comments and docs
MoonE Nov 10, 2024
d09a737
Fix usage of a <-> an in error messages
MoonE Nov 10, 2024
97dfc24
Fix doc using wrong function name `a` instead of `getOne`
MoonE Nov 10, 2024
bfbd53c
Merge pull request #11154 from MoonE/fix-grammar-an-a
weirdan Nov 10, 2024
95631f5
Merge remote-tracking branch 'origin/5.x'
danog Nov 23, 2024
4573dbf
cs-fix
danog Nov 23, 2024
35263ad
BUmp
danog Nov 23, 2024
611ed6e
Fixes
danog Nov 23, 2024
023a28a
Rectify
danog Nov 23, 2024
f1ff774
Fix
danog Nov 23, 2024
e55859b
cs-fix
danog Nov 23, 2024
973ebba
Fix
danog Nov 23, 2024
b7b3790
Test on 8.4 and ARM64
danog Nov 23, 2024
7e5ce38
Improve composer.json
danog Nov 23, 2024
3798e30
Add mac OS scan
danog Nov 23, 2024
45f246d
Add mac OS scan
danog Nov 23, 2024
23745e5
Fix
danog Nov 23, 2024
7f5ec93
Bump
danog Nov 23, 2024
21b607a
Revert 44f9440664554224e2c82f0e38e2eff71f7e38c7
danog Nov 24, 2024
3afbafc
Improve JIT logic
danog Nov 24, 2024
3e7762b
Fix
danog Nov 24, 2024
50e14a9
Fixes
danog Nov 24, 2024
b29fca3
Fix
danog Nov 24, 2024
51f525d
Defer
danog Nov 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/macos-scan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Run Psalm (mac OS)

on: [push, pull_request]

permissions:
contents: read

jobs:
build:
runs-on: macos-15

steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
ini-values: zend.assertions=1
tools: composer:v2
coverage: none
env:
fail-fast: true

- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
env:
COMPOSER_ROOT_VERSION: dev-master

- name: Run Psalm
run: ./psalm --output-format=github
4 changes: 2 additions & 2 deletions .github/workflows/shepherd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
php-version: '8.4'
ini-values: zend.assertions=1
tools: composer:v2
coverage: none
Expand All @@ -26,4 +26,4 @@ jobs:
COMPOSER_ROOT_VERSION: dev-master

- name: Run Psalm
run: ./psalm --threads=2 --output-format=github --shepherd
run: ./psalm --output-format=github --shepherd
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
}
],
"require": {
"php": "~8.1.17 || ~8.2.4 || ~8.3.0",
"php": "~8.1.17 || ~8.2.4 || ~8.3.0 || ~8.4.0",
"ext-SimpleXML": "*",
"ext-ctype": "*",
"ext-dom": "*",
Expand Down
1 change: 1 addition & 0 deletions config.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,7 @@
<xs:element name="MismatchingDocblockParamType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="MismatchingDocblockPropertyType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="MismatchingDocblockReturnType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="MissingClassConstType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="MissingClosureParamType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="MissingClosureReturnType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="MissingConstructor" type="IssueHandlerType" minOccurs="0" />
Expand Down
78 changes: 39 additions & 39 deletions dictionaries/CallMap.php

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions dictionaries/CallMap_73_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@
'old' => ['bool', 'directory'=>'string', 'permissions='=>'int', 'recursive='=>'bool', 'context='=>'resource'],
'new' => ['bool', 'directory'=>'string', 'permissions='=>'int', 'recursive='=>'bool', 'context='=>'null|resource'],
],
'session_get_cookie_params' => [
'old' => ['array{lifetime:?int,path:?string,domain:?string,secure:?bool,httponly:?bool}'],
'new' => ['array{lifetime:?int,path:?string,domain:?string,secure:?bool,httponly:?bool,samesite:?string}'],
]
],
'removed' => [
],
Expand Down
92 changes: 92 additions & 0 deletions dictionaries/CallMap_81_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -727,6 +727,30 @@
'old' => ['bool', 'statement' => 'mysqli_stmt'],
'new' => ['bool', 'statement' => 'mysqli_stmt', 'params=' => 'list<mixed>|null'],
],
'mysqli_fetch_field' => [
'old' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'result'=>'mysqli_result'],
'new' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:0,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'result'=>'mysqli_result'],
],
'mysqli_fetch_field_direct' => [
'old' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'result'=>'mysqli_result', 'index'=>'int'],
'new' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:0,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'result'=>'mysqli_result', 'index'=>'int'],
],
'mysqli_fetch_fields' => [
'old' => ['list<object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}>', 'result'=>'mysqli_result'],
'new' => ['list<object{name:string,orgname:string,table:string,orgtable:string,max_length:0,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}>', 'result'=>'mysqli_result'],
],
'mysqli_result::fetch_field' => [
'old' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false'],
'new' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:0,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false'],
],
'mysqli_result::fetch_field_direct' => [
'old' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'index'=>'int'],
'new' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:0,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'index'=>'int'],
],
'mysqli_result::fetch_fields' => [
'old' => ['list<object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}>'],
'new' => ['list<object{name:string,orgname:string,table:string,orgtable:string,max_length:0,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}>'],
],
'mysqli_stmt_execute' => [
'old' => ['bool', 'statement' => 'mysqli_stmt'],
'new' => ['bool', 'statement' => 'mysqli_stmt', 'params=' => 'list<mixed>|null'],
Expand Down Expand Up @@ -1211,6 +1235,74 @@
'old' => ['int|false', '&rw_read'=>'?resource[]', '&rw_write'=>'?resource[]', '&rw_except'=>'?resource[]', 'seconds'=>'?int', 'microseconds='=>'int'],
'new' => ['int|false', '&rw_read'=>'?resource[]', '&rw_write'=>'?resource[]', '&rw_except'=>'?resource[]', 'seconds'=>'?int', 'microseconds='=>'?int'],
],
'mb_check_encoding' => [
'old' => ['bool', 'value='=>'array|string|null', 'encoding='=>'string|null'],
'new' => ['bool', 'value'=>'array|string', 'encoding='=>'string|null'],
],
'ctype_alnum' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_alpha' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_cntrl' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_digit' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_graph' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_lower' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_print' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_punct' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_space' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_upper' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'ctype_xdigit' => [
'old' => ['bool', 'text'=>'string|int'],
'new' => ['bool', 'text'=>'string'],
],
'key' => [
'old' => ['int|string|null', 'array'=>'array|object'],
'new' => ['int|string|null', 'array'=>'array'],
],
'current' => [
'old' => ['mixed|false', 'array'=>'array|object'],
'new' => ['mixed|false', 'array'=>'array'],
],
'next' => [
'old' => ['mixed', '&r_array'=>'array|object'],
'new' => ['mixed', '&r_array'=>'array'],
],
'prev' => [
'old' => ['mixed', '&r_array'=>'array|object'],
'new' => ['mixed', '&r_array'=>'array'],
],
'reset' => [
'old' => ['mixed|false', '&r_array'=>'array|object'],
'new' => ['mixed|false', '&r_array'=>'array'],
],
],

'removed' => [
Expand Down
24 changes: 24 additions & 0 deletions dictionaries/CallMap_82_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,30 @@
'old' => ['array|string|int|false', 'type='=>'string'],
'new' => ['array|string|int|false|null', 'type='=>'string'],
],
'strcmp' => [
'old' => ['int', 'string1' => 'string', 'string2' => 'string'],
'new' => ['int<-1,1>', 'string1' => 'string', 'string2' => 'string'],
],
'strcasecmp' => [
'old' => ['int', 'string1' => 'string', 'string2' => 'string'],
'new' => ['int<-1,1>', 'string1' => 'string', 'string2' => 'string'],
],
'strnatcasecmp' => [
'old' => ['int', 'string1' => 'string', 'string2' => 'string'],
'new' => ['int<-1,1>', 'string1' => 'string', 'string2' => 'string'],
],
'strnatcmp' => [
'old' => ['int', 'string1' => 'string', 'string2' => 'string'],
'new' => ['int<-1,1>', 'string1' => 'string', 'string2' => 'string'],
],
'strncmp' => [
'old' => ['int', 'string1'=>'string', 'string2'=>'string', 'length'=>'int'],
'new' => ['int<-1,1>', 'string1' => 'string', 'string2' => 'string', 'length'=>'positive-int|0'],
],
'strncasecmp' => [
'old' => ['int', 'string1'=>'string', 'string2'=>'string', 'length'=>'int'],
'new' => ['int<-1,1>', 'string1' => 'string', 'string2' => 'string', 'length'=>'positive-int|0'],
],
],

'removed' => [
Expand Down
8 changes: 8 additions & 0 deletions dictionaries/CallMap_83_delta.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,14 @@
'old' => ['string|false', 'haystack'=>'string', 'needle'=>'string'],
'new' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
],
'get_class' => [
'old' => ['class-string', 'object='=>'object'],
'new' => ['class-string', 'object'=>'object'],
],
'get_parent_class' => [
'old' => ['class-string|false', 'object_or_class='=>'object|class-string'],
'new' => ['class-string|false', 'object_or_class'=>'object|class-string'],
],
],

'removed' => [
Expand Down
28 changes: 14 additions & 14 deletions dictionaries/CallMap_historical.php
Original file line number Diff line number Diff line change
Expand Up @@ -3393,7 +3393,7 @@
'LimitIterator::seek' => ['int', 'offset'=>'int'],
'LimitIterator::valid' => ['bool'],
'Locale::acceptFromHttp' => ['string|false', 'header'=>'string'],
'Locale::canonicalize' => ['string', 'locale'=>'string'],
'Locale::canonicalize' => ['?string', 'locale'=>'string'],
'Locale::composeLocale' => ['string', 'subtags'=>'array'],
'Locale::filterMatches' => ['?bool', 'languageTag'=>'string', 'locale'=>'string', 'canonicalize='=>'bool'],
'Locale::getAllVariants' => ['array', 'locale'=>'string'],
Expand Down Expand Up @@ -5968,7 +5968,7 @@
'ReflectionParameter::getDeclaringFunction' => ['ReflectionFunctionAbstract'],
'ReflectionParameter::getDefaultValue' => ['mixed'],
'ReflectionParameter::getDefaultValueConstantName' => ['?string'],
'ReflectionParameter::getName' => ['string'],
'ReflectionParameter::getName' => ['non-empty-string'],
'ReflectionParameter::getPosition' => ['int<0, max>'],
'ReflectionParameter::getType' => ['?ReflectionType'],
'ReflectionParameter::hasType' => ['bool'],
Expand Down Expand Up @@ -10671,7 +10671,7 @@
'getimagesize' => ['array{0:int, 1: int, 2: int, 3: string, mime: string, channels?: 3|4, bits?: int}|false', 'filename'=>'string', '&w_image_info='=>'array'],
'getimagesizefromstring' => ['array{0:int, 1: int, 2: int, 3: string, mime: string, channels?: 3|4, bits?: int}|false', 'string'=>'string', '&w_image_info='=>'array'],
'getlastmod' => ['int|false'],
'getmxrr' => ['bool', 'hostname'=>'string', '&w_hosts'=>'array', '&w_weights='=>'array'],
'getmxrr' => ['bool', 'hostname'=>'string', '&w_hosts'=>'array<int, string>', '&w_weights='=>'array<int, int>'],
'getmygid' => ['int|false'],
'getmyinode' => ['int|false'],
'getmypid' => ['int|false'],
Expand Down Expand Up @@ -12728,9 +12728,9 @@
'mysqli_fetch_array\'1' => ['array<string,null|int|float|string>|false|null', 'result'=>'mysqli_result', 'mode='=>'1'],
'mysqli_fetch_array\'2' => ['list<null|int|float|string>|false|null', 'result'=>'mysqli_result', 'mode='=>'2'],
'mysqli_fetch_assoc' => ['array<string,null|int|float|string>|false|null', 'result'=>'mysqli_result'],
'mysqli_fetch_field' => ['object{name:non-empty-string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:string,catalog:string}|false', 'result'=>'mysqli_result'],
'mysqli_fetch_field_direct' => ['object{name:non-empty-string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:string,catalog:string}|false', 'result'=>'mysqli_result', 'index'=>'int'],
'mysqli_fetch_fields' => ['list<object{name:non-empty-string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:string,catalog:string}>', 'result'=>'mysqli_result'],
'mysqli_fetch_field' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'result'=>'mysqli_result'],
'mysqli_fetch_field_direct' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'result'=>'mysqli_result', 'index'=>'int'],
'mysqli_fetch_fields' => ['list<object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}>', 'result'=>'mysqli_result'],
'mysqli_fetch_lengths' => ['array|false', 'result'=>'mysqli_result'],
'mysqli_fetch_object' => ['object|false|null', 'result'=>'mysqli_result', 'class='=>'string', 'constructor_args='=>'array'],
'mysqli_fetch_row' => ['list<null|int|float|string>|false|null', 'result'=>'mysqli_result'],
Expand All @@ -12742,7 +12742,7 @@
'mysqli_get_charset' => ['?object', 'mysql'=>'mysqli'],
'mysqli_get_client_info' => ['string', 'mysql='=>'?mysqli'],
'mysqli_get_client_stats' => ['array'],
'mysqli_get_client_version' => ['int', 'link'=>'mysqli'],
'mysqli_get_client_version' => ['int'],
'mysqli_get_connection_stats' => ['array', 'mysql'=>'mysqli'],
'mysqli_get_host_info' => ['string', 'mysql'=>'mysqli'],
'mysqli_get_links_stats' => ['array'],
Expand Down Expand Up @@ -12783,9 +12783,9 @@
'mysqli_result::fetch_array\'1' => ['array<string,null|int|float|string>|false|null', 'mode='=>'1'],
'mysqli_result::fetch_array\'2' => ['list<null|int|float|string>|false|null', 'mode='=>'2'],
'mysqli_result::fetch_assoc' => ['array<string,null|int|float|string>|false|null'],
'mysqli_result::fetch_field' => ['object{name:non-empty-string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:string,catalog:string}|false'],
'mysqli_result::fetch_field_direct' => ['object{name:non-empty-string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:string,catalog:string}|false', 'index'=>'int'],
'mysqli_result::fetch_fields' => ['list<object{name:non-empty-string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:string,catalog:string}>'],
'mysqli_result::fetch_field' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false'],
'mysqli_result::fetch_field_direct' => ['object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}|false', 'index'=>'int'],
'mysqli_result::fetch_fields' => ['list<object{name:string,orgname:string,table:string,orgtable:string,max_length:int,length:int,charsetnr:int,flags:int,type:int,decimals:int,db:string,def:\'\',catalog:\'def\'}>'],
'mysqli_result::fetch_object' => ['object|false|null', 'class='=>'string', 'constructor_args='=>'array'],
'mysqli_result::fetch_row' => ['list<null|int|float|string>|false|null'],
'mysqli_result::field_seek' => ['bool', 'index'=>'int'],
Expand Down Expand Up @@ -13499,9 +13499,9 @@
'preg_filter' => ['string|string[]|null', 'pattern'=>'string|string[]', 'replacement'=>'string|string[]', 'subject'=>'string|string[]', 'limit='=>'int', '&w_count='=>'int'],
'preg_grep' => ['array|false', 'pattern'=>'string', 'array'=>'array', 'flags='=>'int'],
'preg_last_error' => ['int'],
'preg_match' => ['int|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'string[]', 'flags='=>'0', 'offset='=>'int'],
'preg_match\'1' => ['int|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'array', 'flags='=>'int', 'offset='=>'int'],
'preg_match_all' => ['int|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'array', 'flags='=>'int', 'offset='=>'int'],
'preg_match' => ['0|1|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'string[]', 'flags='=>'0', 'offset='=>'int'],
'preg_match\'1' => ['0|1|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'array', 'flags='=>'int', 'offset='=>'int'],
'preg_match_all' => ['int<0,max>|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'array', 'flags='=>'int', 'offset='=>'int'],
'preg_quote' => ['string', 'str'=>'string', 'delimiter='=>'string'],
'preg_replace' => ['string|string[]|null', 'pattern'=>'string|array', 'replacement'=>'string|array', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
'preg_replace_callback' => ['string|null', 'pattern'=>'string|array', 'callback'=>'callable(string[]):string', 'subject'=>'string', 'limit='=>'int', '&w_count='=>'int'],
Expand Down Expand Up @@ -13840,7 +13840,7 @@
'session_decode' => ['bool', 'data'=>'string'],
'session_destroy' => ['bool'],
'session_encode' => ['string|false'],
'session_get_cookie_params' => ['array'],
'session_get_cookie_params' => ['array{lifetime:?int,path:?string,domain:?string,secure:?bool,httponly:?bool}'],
'session_id' => ['string|false', 'id='=>'string'],
'session_is_registered' => ['bool', 'name'=>'string'],
'session_module_name' => ['string|false', 'module='=>'string'],
Expand Down
5 changes: 5 additions & 0 deletions dictionaries/ImpureFunctionsList.php
Original file line number Diff line number Diff line change
Expand Up @@ -254,4 +254,9 @@
'openssl_pkcs12_export_to_file' => true,
'openssl_pkey_export_to_file' => true,
'openssl_x509_export_to_file' => true,
// xml
'xml_parser_set_option' => true,
'xml_parser_free' => true,
// mail
'mail' => true,
];
Loading