Skip to content

Commit 7d84581

Browse files
Add float support
1 parent 9162f23 commit 7d84581

File tree

8 files changed

+20
-18
lines changed

8 files changed

+20
-18
lines changed

src/Type/FloatType.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
88
use PHPStan\TrinaryLogic;
99
use PHPStan\Type\Accessory\AccessoryNumericStringType;
10+
use PHPStan\Type\Accessory\AccessoryUppercaseStringType;
1011
use PHPStan\Type\Constant\ConstantArrayType;
1112
use PHPStan\Type\Constant\ConstantIntegerType;
1213
use PHPStan\Type\Traits\NonArrayTypeTrait;
@@ -134,6 +135,7 @@ public function toString(): Type
134135
{
135136
return new IntersectionType([
136137
new StringType(),
138+
new AccessoryUppercaseStringType(),
137139
new AccessoryNumericStringType(),
138140
]);
139141
}

tests/PHPStan/Analyser/nsrt/array-fill-keys.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ function withNotConstantArray(array $foo, array $bar, array $baz, array $floats,
9191
assertType("array<string, null>", array_fill_keys($foo, null));
9292
assertType("array<int, null>", array_fill_keys($bar, null));
9393
assertType("array<'foo', null>", array_fill_keys($baz, null));
94-
assertType("array<numeric-string, null>", array_fill_keys($floats, null));
94+
assertType("array<numeric-string&uppercase-string, null>", array_fill_keys($floats, null));
9595
assertType("array<bool|int|string, null>", array_fill_keys($mixed, null));
9696
assertType('array<string, null>', array_fill_keys($list, null));
9797
assertType('*ERROR*', array_fill_keys($objectsWithoutToString, null));

tests/PHPStan/Analyser/nsrt/bug-11129.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ public function foo(
6464
assertType('lowercase-string&non-falsy-string&uppercase-string', $negativeInt.$maybeNegativeConstStrings);
6565

6666
// https://3v4l.org/BCS2K
67-
assertType('non-falsy-string', $float.$float);
68-
assertType('non-falsy-string&numeric-string', $float.$positiveInt);
69-
assertType('non-falsy-string', $float.$negativeInt);
70-
assertType('non-falsy-string', $float.$i);
71-
assertType('non-falsy-string', $i.$float); // could be 'non-falsy-string&numeric-string'
67+
assertType('non-falsy-string&uppercase-string', $float.$float);
68+
assertType('non-falsy-string&numeric-string&uppercase-string', $float.$positiveInt);
69+
assertType('non-falsy-string&uppercase-string', $float.$negativeInt);
70+
assertType('non-falsy-string&uppercase-string', $float.$i);
71+
assertType('non-falsy-string&uppercase-string', $i.$float); // could be 'non-falsy-string&numeric-string&uppercase-string'
7272
assertType('non-falsy-string', $numericString.$float);
7373
assertType('non-falsy-string', $numericString.$maybeFloatConstStrings);
7474

tests/PHPStan/Analyser/nsrt/cast-to-numeric-string.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
*/
1515
function foo(int $a, float $b, $numeric, $numeric2, $number, $positive, $negative, $constantInt): void {
1616
assertType('lowercase-string&numeric-string&uppercase-string', (string)$a);
17-
assertType('numeric-string', (string)$b);
17+
assertType('numeric-string&uppercase-string', (string)$b);
1818
assertType('numeric-string', (string)$numeric);
1919
assertType('numeric-string', (string)$numeric2);
20-
assertType('numeric-string', (string)$number);
20+
assertType('numeric-string&uppercase-string', (string)$number);
2121
assertType('lowercase-string&non-falsy-string&numeric-string&uppercase-string', (string)$positive);
2222
assertType('lowercase-string&non-falsy-string&numeric-string&uppercase-string', (string)$negative);
2323
assertType("'1'", (string)$constantInt);
@@ -33,19 +33,19 @@ function foo(int $a, float $b, $numeric, $numeric2, $number, $positive, $negativ
3333
*/
3434
function concatEmptyString(int $a, float $b, $numeric, $numeric2, $number, $positive, $negative, $constantInt): void {
3535
assertType('lowercase-string&numeric-string&uppercase-string', '' . $a);
36-
assertType('numeric-string', '' . $b);
36+
assertType('numeric-string&uppercase-string', '' . $b);
3737
assertType('numeric-string', '' . $numeric);
3838
assertType('numeric-string', '' . $numeric2);
39-
assertType('numeric-string', '' . $number);
39+
assertType('numeric-string&uppercase-string', '' . $number);
4040
assertType('lowercase-string&non-falsy-string&numeric-string&uppercase-string', '' . $positive);
4141
assertType('lowercase-string&non-falsy-string&numeric-string&uppercase-string', '' . $negative);
4242
assertType("'1'", '' . $constantInt);
4343

4444
assertType('lowercase-string&numeric-string&uppercase-string', $a . '');
45-
assertType('numeric-string', $b . '');
45+
assertType('numeric-string&uppercase-string', $b . '');
4646
assertType('numeric-string', $numeric . '');
4747
assertType('numeric-string', $numeric2 . '');
48-
assertType('numeric-string', $number . '');
48+
assertType('numeric-string&uppercase-string', $number . '');
4949
assertType('lowercase-string&non-falsy-string&numeric-string&uppercase-string', $positive . '');
5050
assertType('lowercase-string&non-falsy-string&numeric-string&uppercase-string', $negative . '');
5151
assertType("'1'", $constantInt . '');
@@ -57,7 +57,7 @@ function concatAssignEmptyString(int $i, float $f) {
5757

5858
$s = '';
5959
$s .= $f;
60-
assertType('numeric-string', $s);
60+
assertType('numeric-string&uppercase-string', $s);
6161
}
6262

6363
/**

tests/PHPStan/Analyser/nsrt/filter-var.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public function scalars(bool $bool, float $float, int $int, string $string, int
154154
assertType("''|'1'", filter_var($bool));
155155
assertType("'1'", filter_var(true));
156156
assertType("''", filter_var(false));
157-
assertType('numeric-string', filter_var($float));
157+
assertType('numeric-string&uppercase-string', filter_var($float));
158158
assertType("'17'", filter_var(17.0));
159159
assertType("'17.1'", filter_var(17.1));
160160
assertType("'1.0E-50'", filter_var(1e-50));

tests/PHPStan/Analyser/nsrt/non-empty-string-replace-functions.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ public function replace(string $search, string $replacement, string $subject){
2626

2727
function foo(float $f) {
2828
$s = (string) $f;
29-
assertType('numeric-string', $s);
29+
assertType('numeric-string&uppercase-string', $s);
3030

3131
$price = str_replace(',', '.', $s);
32-
assertType('non-empty-string', $price);
32+
assertType('non-empty-string&uppercase-string', $price);
3333
}
3434
}

tests/PHPStan/Analyser/nsrt/set-type-type-specifying.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function doString(string $s, int $i, float $f, array $a, object $o)
1414
assertType('lowercase-string&numeric-string&uppercase-string', $i);
1515

1616
settype($f, 'string');
17-
assertType('numeric-string', $f);
17+
assertType('numeric-string&uppercase-string', $f);
1818

1919
settype($a, 'string');
2020
assertType('*ERROR*', $a);

tests/PHPStan/Analyser/nsrt/strval.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ function strvalTest(string $string, string $class): void
1818
assertType('\'\'|\'1\'', strval(rand(0, 1) === 0));
1919
assertType('\'42\'', strval(42));
2020
assertType('lowercase-string&numeric-string&uppercase-string', strval(rand()));
21-
assertType('numeric-string', strval(rand() * 0.1));
21+
assertType('numeric-string&uppercase-string', strval(rand() * 0.1));
2222
assertType('lowercase-string&numeric-string&uppercase-string', strval(strval(rand())));
2323
assertType('class-string<stdClass>', strval($class));
2424
assertType('string', strval(new \Exception()));

0 commit comments

Comments
 (0)