Skip to content

Commit 311b589

Browse files
Add non regression test (#5540)
1 parent 7604335 commit 311b589

2 files changed

Lines changed: 90 additions & 0 deletions

File tree

tests/PHPStan/Rules/Functions/CallToFunctionParametersRuleTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2838,6 +2838,22 @@ public function testBug4090(): void
28382838
$this->analyse([__DIR__ . '/../../Analyser/nsrt/bug-4090.php'], []);
28392839
}
28402840

2841+
public function testBug2940(): void
2842+
{
2843+
$this->analyse([__DIR__ . '/data/bug-2940.php'], [
2844+
[
2845+
'Parameter #1 $input of function Bug2940\foo expects array{foo2: string, foo1: string, foobarbar1?: string, foobarbar2?: int, foobarbar3?: string, foobarbar4: string, foobarbar6?: string, foobarbar7: int}, array{xx: 3} given.',
2846+
25,
2847+
"Array does not have offset 'foo2'.",
2848+
],
2849+
[
2850+
'Parameter #1 $input of function Bug2940\foo2 expects array{foo2: string, foo1: string, foobarbar1?: string, foobarbar2?: int, foobarbar3?: string, foobarbar4: string, foobarbar6?: string, foobarbar7: int, ...}, array{xx: 3} given.',
2851+
73,
2852+
"Array does not have offset 'foo2'.",
2853+
],
2854+
]);
2855+
}
2856+
28412857
public function testBug11533(): void
28422858
{
28432859
$this->analyse([__DIR__ . '/data/bug-11533.php'], []);
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
namespace Bug2940;
4+
5+
/**
6+
* @param array{
7+
* foo2: string,
8+
* foo1: string,
9+
* foobarbar1?: string,
10+
* foobarbar2?: int,
11+
* foobarbar3?: string,
12+
* foobarbar4: string,
13+
* foobarbar6?: string,
14+
* foobarbar7: int
15+
* } $input
16+
*/
17+
function foo(array $input)
18+
{
19+
//stuff
20+
}
21+
22+
23+
function bar()
24+
{
25+
foo(['xx'=>3]);
26+
}
27+
28+
/**
29+
* @param array{
30+
* foo2: string,
31+
* foo1: string,
32+
* foobarbar1?: string,
33+
* foobarbar2?: int,
34+
* foobarbar3?: string,
35+
* foobarbar4: string,
36+
* foobarbar6?: string,
37+
* foobarbar7?: string,
38+
* foobarbar8?: string,
39+
* foobarbar9?: string,
40+
* foobarbar10?: string,
41+
* foobarbar11?: string,
42+
* foobarbar12?: string,
43+
* foobarbar13?: string,
44+
* foobarbar14?: string,
45+
* foobarbar15?: string,
46+
* foobarbar16?: string,
47+
* foobarbar17?: string,
48+
* foobarbar18?: string,
49+
* foobarbar19?: string,
50+
* foobarbar20?: string,
51+
* foobarbar21?: string,
52+
* foobarbar22?: string,
53+
* foobarbar23?: string,
54+
* foobarbar24?: string,
55+
* foobarbar25?: string,
56+
* foobarbar26?: string,
57+
* foobarbar27?: string,
58+
* foobarbar28?: string,
59+
* foobarbar29?: string,
60+
* foobarbar30?: string,
61+
* foobarbar31?: string,
62+
* foobarbar7: int
63+
* } $input
64+
*/
65+
function foo2(array $input)
66+
{
67+
//stuff
68+
}
69+
70+
71+
function bar2()
72+
{
73+
foo2(['xx'=>3]);
74+
}

0 commit comments

Comments
 (0)