33namespace PHPStan \Parser ;
44
55use PHPStan \Testing \PHPStanTestCase ;
6- use PHPStan \ TrinaryLogic ;
6+ use function count ;
77
88/**
99 * @covers \PHPStan\Parser\RichParser
@@ -18,10 +18,7 @@ public function dataVariadicCallLikes(): iterable
1818 __DIR__ . '/data/variadic-functions.php ' ,
1919 VariadicFunctionsVisitor::ATTRIBUTE_NAME ,
2020 [
21- 'VariadicFunctions\variadic_fn1 ' => TrinaryLogic::createYes (),
22- 'VariadicFunctions\nonvariadic ' => TrinaryLogic::createNo (),
23- 'VariadicFunctions\maybe_variadic_fn1 ' => TrinaryLogic::createNo (),
24- 'VariadicFunctions\implicit_variadic_fn1 ' => TrinaryLogic::createYes (),
21+ 'VariadicFunctions\implicit_variadic_fn1 ' => true ,
2522 ],
2623 ];
2724
@@ -30,34 +27,23 @@ public function dataVariadicCallLikes(): iterable
3027 VariadicMethodsVisitor::ATTRIBUTE_NAME ,
3128 [
3229 'VariadicMethod\X ' => [
33- 'non_variadic_fn1 ' => TrinaryLogic::createNo (),
34- 'variadic_fn1 ' => TrinaryLogic::createNo (), // native variadicness later on detected via reflection
35- 'implicit_variadic_fn1 ' => TrinaryLogic::createYes (),
30+ 'implicit_variadic_fn1 ' => true ,
3631 ],
3732 'VariadicMethod\Z ' => [
38- 'non_variadic_fnZ ' => TrinaryLogic::createNo (),
39- 'variadic_fnZ ' => TrinaryLogic::createNo (), // native variadicness later on detected via reflection
40- 'implicit_variadic_fnZ ' => TrinaryLogic::createYes (),
33+ 'implicit_variadic_fnZ ' => true ,
4134 ],
4235 'class@anonymous:20:30 ' => [
43- 'non_variadic_fn_subZ ' => TrinaryLogic::createNo (),
44- 'variadic_fn_subZ ' => TrinaryLogic::createNo (), // native variadicness later on detected via reflection
45- 'implicit_variadic_subZ ' => TrinaryLogic::createYes (),
36+ 'implicit_variadic_subZ ' => true ,
4637 ],
4738 'class@anonymous:42:52 ' => [
48- 'non_variadic_fn ' => TrinaryLogic::createNo (),
49- 'variadic_fn ' => TrinaryLogic::createNo (), // native variadicness later on detected via reflection
50- 'implicit_variadic_fn ' => TrinaryLogic::createYes (),
39+ 'implicit_variadic_fn ' => true ,
5140 ],
5241 'class@anonymous:54:58 ' => [
53- 'implicit_variadic_fn ' => TrinaryLogic:: createYes () ,
42+ 'implicit_variadic_fn ' => true ,
5443 ],
55- 'class@anonymous:54:54 ' => [],
5644 'class@anonymous:61:68 ' => [
57- 'nestedClass ' => TrinaryLogic::createNo (),
58- 'implicit_variadic_fn ' => TrinaryLogic::createYes (),
45+ 'implicit_variadic_fn ' => true ,
5946 ],
60- 'class@anonymous:63:63 ' => [],
6147 ],
6248 ];
6349
@@ -66,17 +52,15 @@ public function dataVariadicCallLikes(): iterable
6652 VariadicMethodsVisitor::ATTRIBUTE_NAME ,
6753 [
6854 'VariadicMethodEnum\X ' => [
69- 'non_variadic_fn1 ' => TrinaryLogic::createNo (),
70- 'variadic_fn1 ' => TrinaryLogic::createNo (), // variadicness later on detected via reflection
71- 'implicit_variadic_fn1 ' => TrinaryLogic::createYes (),
55+ 'implicit_variadic_fn1 ' => true ,
7256 ],
7357 ],
7458 ];
7559 }
7660
7761 /**
7862 * @dataProvider dataVariadicCallLikes
79- * @param array<string, TrinaryLogic >|array<string, array<string, TrinaryLogic >> $expectedVariadics
63+ * @param array<string, true >|array<string, array<string, true >> $expectedVariadics
8064 * @throws ParserErrorsException
8165 */
8266 public function testSimpleParserVariadicCallLikes (string $ file , string $ attributeName , array $ expectedVariadics ): void
@@ -86,12 +70,16 @@ public function testSimpleParserVariadicCallLikes(string $file, string $attribut
8670 $ ast = $ parser ->parseFile ($ file );
8771 $ variadics = $ ast [0 ]->getAttribute ($ attributeName );
8872 $ this ->assertIsArray ($ variadics );
89- $ this ->assertSame ($ expectedVariadics , $ variadics );
73+ $ this ->assertCount (count ($ expectedVariadics ), $ variadics );
74+ foreach ($ expectedVariadics as $ key => $ expectedVariadic ) {
75+ $ this ->assertArrayHasKey ($ key , $ variadics );
76+ $ this ->assertSame ($ expectedVariadic , $ variadics [$ key ]);
77+ }
9078 }
9179
9280 /**
9381 * @dataProvider dataVariadicCallLikes
94- * @param array<string, TrinaryLogic >|array<string, array<string, TrinaryLogic >> $expectedVariadics
82+ * @param array<string, true >|array<string, array<string, true >> $expectedVariadics
9583 * @throws ParserErrorsException
9684 */
9785 public function testRichParserVariadicCallLikes (string $ file , string $ attributeName , array $ expectedVariadics ): void
@@ -101,7 +89,11 @@ public function testRichParserVariadicCallLikes(string $file, string $attributeN
10189 $ ast = $ parser ->parseFile ($ file );
10290 $ variadics = $ ast [0 ]->getAttribute ($ attributeName );
10391 $ this ->assertIsArray ($ variadics );
104- $ this ->assertSame ($ expectedVariadics , $ variadics );
92+ $ this ->assertCount (count ($ expectedVariadics ), $ variadics );
93+ foreach ($ expectedVariadics as $ key => $ expectedVariadic ) {
94+ $ this ->assertArrayHasKey ($ key , $ variadics );
95+ $ this ->assertSame ($ expectedVariadic , $ variadics [$ key ]);
96+ }
10597 }
10698
10799}
0 commit comments