Skip to content

Commit c4e495a

Browse files
TomasVotrubaondrejmirtes
authored andcommitted
add test case for narrow typed json_decode
1 parent 8ad35b3 commit c4e495a

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

tests/PHPStan/Analyser/NodeScopeResolverTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@ class NodeScopeResolverTest extends TypeInferenceTestCase
1414

1515
public function dataFileAsserts(): iterable
1616
{
17+
<<<<<<< HEAD
1718
require_once __DIR__ . '/data/implode.php';
1819
yield from $this->gatherAssertTypes(__DIR__ . '/data/implode.php');
20+
=======
21+
yield from $this->gatherAssertTypes(__DIR__ . '/data/json-decode/narrow_type.php');
22+
yield from $this->gatherAssertTypes(__DIR__ . '/data/json-decode/narrow_type_with_force_array.php');
23+
>>>>>>> add test case for narrow typed json_decode
1924

2025
require_once __DIR__ . '/data/bug2574.php';
2126

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Analyser\JsonDecode;
4+
5+
use function PHPStan\Testing\assertType;
6+
7+
$value = json_decode('true');
8+
assertType('true', $value);
9+
10+
$value = json_decode('1');
11+
assertType('1', $value);
12+
13+
$value = json_decode('1.5');
14+
assertType('1.5', $value);
15+
16+
$value = json_decode('false');
17+
assertType('false', $value);
18+
19+
$value = json_decode('{}');
20+
assertType('stdClass', $value);
21+
22+
$value = json_decode('[1, 2, 3]');
23+
assertType('array{1, 2, 3}', $value);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Analyser\JsonDecode;
4+
5+
use function PHPStan\Testing\assertType;
6+
7+
$value = json_decode('true', true);
8+
assertType('true', $value);
9+
10+
$value = json_decode('1', true);
11+
assertType('1', $value);
12+
13+
$value = json_decode('1.5', true);
14+
assertType('1.5', $value);
15+
16+
$value = json_decode('false', true);
17+
assertType('false', $value);
18+
19+
$value = json_decode('{}', true);
20+
assertType('array{}', $value);
21+
22+
$value = json_decode('[1, 2, 3]', true);
23+
assertType('array{1, 2, 3}', $value);

0 commit comments

Comments
 (0)