66
77class HelloWorld
88{
9- public function doFoo ()
10- {
11- $ aaa = '/[0-9a] ' ;
12- assertType ('*ERROR* ' , preg_split ($ aaa , '1-2-3 ' ));
13- assertType ("array{'1', '2', '3'} " , preg_split ('/-/ ' , '1-2-3 ' ));
14- assertType ("array{'1', '2', '3'} " , preg_split ('/-/ ' , '1-2-3 ' , -1 , PREG_SPLIT_NO_EMPTY ));
15- assertType ("array{'1', '3'} " , preg_split ('/-/ ' , '1--3 ' , -1 , PREG_SPLIT_NO_EMPTY ));
16- assertType ("array{array{'1', 0}, array{'2', 2}, array{'3', 4}} " , preg_split ('/-/ ' , '1-2-3 ' , -1 , PREG_SPLIT_OFFSET_CAPTURE ));
17- assertType ("array{array{'1', 0}, array{'2', 2}, array{'3', 4}} " , preg_split ('/-/ ' , '1-2-3 ' , -1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE ));
18- assertType ("array{array{'1', 0}, array{'', 2}, array{'3', 3}} " , preg_split ('/-/ ' , '1--3 ' , -1 , PREG_SPLIT_OFFSET_CAPTURE ));
19- assertType ("array{array{'1', 0}, array{'3', 3}} " , preg_split ('/-/ ' , '1--3 ' , -1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE ));
20- }
21-
22- public function doWithVariables (string $ pattern , string $ subject , int $ offset , int $ flags ): void
23- {
24- assertType ('(list<string>|false) ' , preg_split ($ pattern , $ subject , $ offset , $ flags ));
25- assertType ('(list<string>|false) ' , preg_split ("// " , $ subject , $ offset , $ flags ));
26- assertType ('(list<string>|false) ' , preg_split ($ pattern , "1-2-3 " , $ offset , $ flags ));
27- assertType ('(list<string>|false) ' , preg_split ($ pattern , $ subject , -1 , $ flags ));
28- assertType ('(list<string>|false) ' , preg_split ($ pattern , $ subject , $ offset , PREG_SPLIT_NO_EMPTY ));
29- assertType ('list<array{string, int<0, max>}> ' , preg_split ($ pattern , $ subject , $ offset , PREG_SPLIT_OFFSET_CAPTURE ));
30- }
31-
329 /**
3310 * @param string $pattern
3411 * @param string $subject
@@ -39,24 +16,54 @@ public function doWithVariables(string $pattern, string $subject, int $offset, i
3916 */
4017 public static function splitWithOffset ($ pattern , $ subject , $ limit = -1 , $ flags = 0 )
4118 {
42- assertType ('list<array{string, int<0, max>}> ' , preg_split ($ pattern , $ subject , $ limit , $ flags | PREG_SPLIT_OFFSET_CAPTURE ));
43- assertType ('list<array{string, int<0, max>}> ' , preg_split ($ pattern , $ subject , $ limit , PREG_SPLIT_OFFSET_CAPTURE | $ flags ));
44-
45- assertType ('list<array{string, int<0, max>}> ' , preg_split ($ pattern , $ subject , $ limit , PREG_SPLIT_OFFSET_CAPTURE | $ flags | PREG_SPLIT_NO_EMPTY ));
19+ assertType ('(list<array{string, int<0, max>}>|false) ' , preg_split ($ pattern , $ subject , $ limit , $ flags | PREG_SPLIT_OFFSET_CAPTURE ));
20+ assertType ('(list<array{string, int<0, max>}>|false) ' , preg_split ($ pattern , $ subject , $ limit , PREG_SPLIT_OFFSET_CAPTURE | $ flags ));
21+ assertType ('(list<array{non-empty-string, int<0, max>}>|false) ' , preg_split ($ pattern , $ subject , $ limit , PREG_SPLIT_OFFSET_CAPTURE | $ flags | PREG_SPLIT_NO_EMPTY ));
4622 }
4723
4824 /**
4925 * @param string $pattern
5026 * @param string $subject
5127 * @param int $limit
5228 */
53- public static function dynamicFlags ($ pattern , $ subject , $ limit = -1 ) {
29+ public static function dynamicFlags ($ pattern , $ subject , $ limit = -1 )
30+ {
5431 $ flags = PREG_SPLIT_OFFSET_CAPTURE ;
5532
5633 if ($ subject === '1-2-3 ' ) {
5734 $ flags |= PREG_SPLIT_NO_EMPTY ;
5835 }
5936
60- assertType ('list<array{string, int<0, max>}>|false ' , preg_split ($ pattern , $ subject , $ limit , $ flags ));
37+ assertType ('(list<array{string, int<0, max>}>|false) ' , preg_split ($ pattern , $ subject , $ limit , $ flags ));
38+ }
39+
40+ public function doFoo ()
41+ {
42+ assertType ('*ERROR* ' , preg_split ('/[0-9a] ' , '1-2-3 ' ));
43+ assertType ("array{''} " , preg_split ('/-/ ' , '' ));
44+ assertType ("array{'1', '2', '3'} " , preg_split ('/-/ ' , '1-2-3 ' ));
45+ assertType ("array{'1', '2', '3'} " , preg_split ('/-/ ' , '1-2-3 ' , -1 , PREG_SPLIT_NO_EMPTY ));
46+ assertType ("array{'1', '3'} " , preg_split ('/-/ ' , '1--3 ' , -1 , PREG_SPLIT_NO_EMPTY ));
47+ assertType ("array{array{'1', 0}, array{'2', 2}, array{'3', 4}} " , preg_split ('/-/ ' , '1-2-3 ' , -1 , PREG_SPLIT_OFFSET_CAPTURE ));
48+ assertType ("array{array{'1', 0}, array{'2', 2}, array{'3', 4}} " , preg_split ('/-/ ' , '1-2-3 ' , -1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE ));
49+ assertType ("array{array{'1', 0}, array{'', 2}, array{'3', 3}} " , preg_split ('/-/ ' , '1--3 ' , -1 , PREG_SPLIT_OFFSET_CAPTURE ));
50+ assertType ("array{array{'1', 0}, array{'3', 3}} " , preg_split ('/-/ ' , '1--3 ' , -1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE ));
51+ }
52+
53+ /**
54+ * @param non-empty-string $nonEmptySubject
55+ */
56+ public function doWithVariables (string $ pattern , string $ subject , string $ nonEmptySubject , int $ offset , int $ flags ): void
57+ {
58+ assertType ('(list<array{string, int<0, max>}|string>|false) ' , preg_split ($ pattern , $ subject , $ offset , $ flags ));
59+ assertType ('(list<array{string, int<0, max>}|string>|false) ' , preg_split ("// " , $ subject , $ offset , $ flags ));
60+
61+ assertType ('(list<array{string, int<0, max>}|string>|false) ' , preg_split ($ pattern , $ nonEmptySubject , $ offset , $ flags ));
62+ assertType ('(list<array{string, int<0, max>}|string>|false) ' , preg_split ("// " , $ nonEmptySubject , $ offset , $ flags ));
63+
64+ assertType ('(list<array{string, int<0, max>}|string>|false) ' , preg_split ($ pattern , "1-2-3 " , $ offset , $ flags ));
65+ assertType ('(list<array{string, int<0, max>}|string>|false) ' , preg_split ($ pattern , $ subject , -1 , $ flags ));
66+ assertType ('(list<non-empty-string>|false) ' , preg_split ($ pattern , $ subject , $ offset , PREG_SPLIT_NO_EMPTY ));
67+ assertType ('(list<array{string, int<0, max>}>|false) ' , preg_split ($ pattern , $ subject , $ offset , PREG_SPLIT_OFFSET_CAPTURE ));
6168 }
6269}
0 commit comments