Skip to content

Commit f0b1080

Browse files
committed
Merge remote-tracking branch 'origin/1.12.x' into 2.0.x
2 parents f243636 + ceac309 commit f0b1080

File tree

5 files changed

+40
-12
lines changed

5 files changed

+40
-12
lines changed

Diff for: resources/functionMap.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@
286286
'array_map' => ['array', 'callback'=>'?callable', 'array'=>'array', '...args='=>'array'],
287287
'array_merge' => ['array', 'arr1'=>'array', '...args='=>'array'],
288288
'array_merge_recursive' => ['array', 'arr1'=>'array', '...args='=>'array'],
289-
'array_multisort' => ['bool', '&rw_array1'=>'array', 'array1_sort_order='=>'array|int', 'array1_sort_flags='=>'array|int', '...args='=>'array|int'],
289+
'array_multisort' => ['bool', 'array1'=>'array', 'array1_sort_order='=>'array|int', 'array1_sort_flags='=>'array|int', '...args='=>'array|int'],
290290
'array_pad' => ['array', 'input'=>'array', 'pad_size'=>'int', 'pad_value'=>'mixed'],
291291
'array_pop' => ['mixed', '&rw_stack'=>'array'],
292292
'array_product' => ['int|float', 'input'=>'array'],
@@ -2637,7 +2637,7 @@
26372637
'explode' => ['list<string>|false', 'separator'=>'string', 'str'=>'string', 'limit='=>'int'],
26382638
'expm1' => ['float', 'number'=>'float'],
26392639
'extension_loaded' => ['bool', 'extension_name'=>'string'],
2640-
'extract' => ['0|positive-int', '&rw_var_array'=>'array', 'extract_type='=>'EXTR_OVERWRITE|EXTR_SKIP|EXTR_PREFIX_SAME|EXTR_PREFIX_ALL|EXTR_PREFIX_INVALID|EXTR_IF_EXISTS|EXTR_PREFIX_IF_EXISTS|EXTR_REFS', 'prefix='=>'string|null'],
2640+
'extract' => ['0|positive-int', 'array'=>'array', 'flags='=>'EXTR_OVERWRITE|EXTR_SKIP|EXTR_PREFIX_SAME|EXTR_PREFIX_ALL|EXTR_PREFIX_INVALID|EXTR_IF_EXISTS|EXTR_PREFIX_IF_EXISTS|EXTR_REFS', 'prefix='=>'string|null'],
26412641
'ezmlm_hash' => ['int', 'addr'=>'string'],
26422642
'fam_cancel_monitor' => ['bool', 'fam'=>'resource', 'fam_monitor'=>'resource'],
26432643
'fam_close' => ['void', 'fam'=>'resource'],

Diff for: resources/functionMap_php74delta.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@
2222
*/
2323
return [
2424
'new' => [
25-
'FFI::addr' => ['FFI\CData', '&ptr'=>'FFI\CData'],
26-
'FFI::alignof' => ['int', '&ptr'=>'mixed'],
25+
'FFI::addr' => ['FFI\CData', 'ptr'=>'FFI\CData'],
26+
'FFI::alignof' => ['int', 'ptr'=>'mixed'],
2727
'FFI::arrayType' => ['FFI\CType', 'type'=>'string|FFI\CType', 'dims'=>'array<int,int>'],
28-
'FFI::cast' => ['FFI\CData', 'type'=>'string|FFI\CType', '&ptr'=>''],
28+
'FFI::cast' => ['FFI\CData', 'type'=>'string|FFI\CType', 'ptr'=>''],
2929
'FFI::cdef' => ['FFI', 'code='=>'string', 'lib='=>'?string'],
30-
'FFI::free' => ['void', '&ptr'=>'FFI\CData'],
30+
'FFI::free' => ['void', 'ptr'=>'FFI\CData'],
3131
'FFI::load' => ['FFI', 'filename'=>'string'],
32-
'FFI::memcmp' => ['int', '&ptr1'=>'FFI\CData|string', '&ptr2'=>'FFI\CData|string', 'size'=>'int'],
33-
'FFI::memcpy' => ['void', '&dst'=>'FFI\CData', '&src'=>'string|FFI\CData', 'size'=>'int'],
34-
'FFI::memset' => ['void', '&ptr'=>'FFI\CData', 'ch'=>'int', 'size'=>'int'],
32+
'FFI::memcmp' => ['int', 'ptr1'=>'FFI\CData|string', 'ptr2'=>'FFI\CData|string', 'size'=>'int'],
33+
'FFI::memcpy' => ['void', 'dst'=>'FFI\CData', 'src'=>'string|FFI\CData', 'size'=>'int'],
34+
'FFI::memset' => ['void', 'ptr'=>'FFI\CData', 'ch'=>'int', 'size'=>'int'],
3535
'FFI::new' => ['FFI\CData', 'type'=>'string|FFI\CType', 'owned='=>'bool', 'persistent='=>'bool'],
3636
'FFI::scope' => ['FFI', 'scope_name'=>'string'],
37-
'FFI::sizeof' => ['int', '&ptr'=>'FFI\CData|FFI\CType'],
38-
'FFI::string' => ['string', '&ptr'=>'FFI\CData', 'size='=>'int'],
39-
'FFI::typeof' => ['FFI\CType', '&ptr'=>'FFI\CData'],
37+
'FFI::sizeof' => ['int', 'ptr'=>'FFI\CData|FFI\CType'],
38+
'FFI::string' => ['string', 'ptr'=>'FFI\CData', 'size='=>'int'],
39+
'FFI::typeof' => ['FFI\CType', 'ptr'=>'FFI\CData'],
4040
'FFI::type' => ['FFI\CType', 'type'=>'string'],
4141
'fread' => ['string|false', 'fp'=>'resource', 'length'=>'positive-int'],
4242
'get_mangled_object_vars' => ['array', 'obj'=>'object'],

Diff for: tests/PHPStan/Analyser/nsrt/extract.php

+18
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,21 @@ function doTyped3(array $vars): void
6666

6767
assertVariableCertainty(TrinaryLogic::createNo(), $none);
6868
}
69+
70+
function doTyped4(): void
71+
{
72+
extract(['foo' => 42]);
73+
74+
assertVariableCertainty(TrinaryLogic::createYes(), $foo);
75+
assertType('42', $foo);
76+
}
77+
78+
79+
function doTyped5(): void
80+
{
81+
$foo = ['foo' => 42];
82+
extract($foo);
83+
84+
assertVariableCertainty(TrinaryLogic::createYes(), $foo);
85+
assertType('42', $foo);
86+
}

Diff for: tests/PHPStan/Rules/Functions/CallToFunctionParametersRuleTest.php

+5
Original file line numberDiff line numberDiff line change
@@ -1905,4 +1905,9 @@ public function testBug7082(): void
19051905
]);
19061906
}
19071907

1908+
public function testBug11759(): void
1909+
{
1910+
$this->analyse([__DIR__ . '/data/bug-11759.php'], []);
1911+
}
1912+
19081913
}

Diff for: tests/PHPStan/Rules/Functions/data/bug-11759.php

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
namespace Bug11759;
4+
5+
extract(['answer' => 42 ]);

0 commit comments

Comments
 (0)