Skip to content

Commit 32412c9

Browse files
staabmondrejmirtes
authored andcommitted
Understand constant strings in patterns
1 parent 30650e6 commit 32412c9

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
],
88
"require": {
99
"php": "^7.2 || ^8.0",
10-
"phpstan/phpstan": "^1.11.9"
10+
"phpstan/phpstan": "^1.11.10"
1111
},
1212
"conflict": {
1313
"nette/application": "<2.3.0",

tests/Type/Nette/data/strings-match.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@ function (string $s): void {
1515
assertType('array{string, string}|null', $result);
1616

1717
$result = Strings::match($s, '/(foo)(bar)(baz)/', PREG_OFFSET_CAPTURE);
18-
assertType('array{array{string, int<0, max>}, array{non-empty-string, int<0, max>}, array{non-empty-string, int<0, max>}, array{non-empty-string, int<0, max>}}|null', $result);
18+
assertType("array{array{string, int<0, max>}, array{'foo', int<0, max>}, array{'bar', int<0, max>}, array{'baz', int<0, max>}}|null", $result);
1919

2020
$result = Strings::match($s, '/(foo)(bar)(baz)/');
21-
assertType('array{string, non-empty-string, non-empty-string, non-empty-string}|null', $result);
21+
assertType("array{string, 'foo', 'bar', 'baz'}|null", $result);
2222

2323
$result = Strings::match($s, '/(foo)(bar)'. preg_quote($s) .'(baz)/');
24-
assertType('array{string, non-empty-string, non-empty-string, non-empty-string}|null', $result);
24+
assertType("array{string, 'foo', 'bar', 'baz'}|null", $result);
2525
};
2626

2727
function (string $s): void {
2828
$result = Strings::matchAll($s, '/ab(?P<num>\d+)(?P<suffix>ab)?/', PREG_SET_ORDER);
29-
assertType("list<array{0: string, num: numeric-string, 1: numeric-string, suffix?: non-empty-string, 2?: non-empty-string}>", $result);
29+
assertType("list<array{0: string, num: numeric-string, 1: numeric-string, suffix?: 'ab', 2?: 'ab'}>", $result);
3030
};
3131

3232
function (string $s): void {
3333
$result = Strings::matchAll($s, '/ab(?P<num>\d+)(?P<suffix>ab)?/', PREG_PATTERN_ORDER);
34-
assertType("array{0: list<string>, num: list<numeric-string>, 1: list<numeric-string>, suffix: list<string>, 2: list<string>}", $result);
34+
assertType("array{0: list<string>, num: list<numeric-string>, 1: list<numeric-string>, suffix: list<''|'ab'>, 2: list<''|'ab'>}", $result);
3535
};

0 commit comments

Comments
 (0)