@@ -59,34 +59,34 @@ function doMatch(string $s): void {
59
59
assertType ('array{}|array{0: string, 1?: non-empty-string} ' , $ matches );
60
60
61
61
if (preg_match ('/(foo)(bar)(baz)+/ ' , $ s , $ matches )) {
62
- assertType ("array{string, 'foo', 'bar', non-empty -string} " , $ matches );
62
+ assertType ("array{string, 'foo', 'bar', non-falsy -string} " , $ matches );
63
63
}
64
- assertType ("array{}|array{string, 'foo', 'bar', non-empty -string} " , $ matches );
64
+ assertType ("array{}|array{string, 'foo', 'bar', non-falsy -string} " , $ matches );
65
65
66
66
if (preg_match ('/(foo)(bar)(baz)*/ ' , $ s , $ matches )) {
67
- assertType ("array{0: string, 1: 'foo', 2: 'bar', 3?: non-empty -string} " , $ matches );
67
+ assertType ("array{0: string, 1: 'foo', 2: 'bar', 3?: non-falsy -string} " , $ matches );
68
68
}
69
- assertType ("array{}|array{0: string, 1: 'foo', 2: 'bar', 3?: non-empty -string} " , $ matches );
69
+ assertType ("array{}|array{0: string, 1: 'foo', 2: 'bar', 3?: non-falsy -string} " , $ matches );
70
70
71
71
if (preg_match ('/(foo)(bar)(baz)?/ ' , $ s , $ matches )) {
72
72
assertType ("array{0: string, 1: 'foo', 2: 'bar', 3?: 'baz'} " , $ matches );
73
73
}
74
74
assertType ("array{}|array{0: string, 1: 'foo', 2: 'bar', 3?: 'baz'} " , $ matches );
75
75
76
76
if (preg_match ('/(foo)(bar)(baz){0,3}/ ' , $ s , $ matches )) {
77
- assertType ("array{0: string, 1: 'foo', 2: 'bar', 3?: non-empty -string} " , $ matches );
77
+ assertType ("array{0: string, 1: 'foo', 2: 'bar', 3?: non-falsy -string} " , $ matches );
78
78
}
79
- assertType ("array{}|array{0: string, 1: 'foo', 2: 'bar', 3?: non-empty -string} " , $ matches );
79
+ assertType ("array{}|array{0: string, 1: 'foo', 2: 'bar', 3?: non-falsy -string} " , $ matches );
80
80
81
81
if (preg_match ('/(foo)(bar)(baz){2,3}/ ' , $ s , $ matches )) {
82
- assertType ("array{string, 'foo', 'bar', non-empty -string} " , $ matches );
82
+ assertType ("array{string, 'foo', 'bar', non-falsy -string} " , $ matches );
83
83
}
84
- assertType ("array{}|array{string, 'foo', 'bar', non-empty -string} " , $ matches );
84
+ assertType ("array{}|array{string, 'foo', 'bar', non-falsy -string} " , $ matches );
85
85
86
86
if (preg_match ('/(foo)(bar)(baz){2}/ ' , $ s , $ matches )) {
87
- assertType ("array{string, 'foo', 'bar', non-empty -string} " , $ matches );
87
+ assertType ("array{string, 'foo', 'bar', non-falsy -string} " , $ matches );
88
88
}
89
- assertType ("array{}|array{string, 'foo', 'bar', non-empty -string} " , $ matches );
89
+ assertType ("array{}|array{string, 'foo', 'bar', non-falsy -string} " , $ matches );
90
90
}
91
91
92
92
function doNonCapturingGroup (string $ s ): void {
@@ -103,14 +103,14 @@ function doNamedSubpattern(string $s): void {
103
103
assertType ('array{}|array{0: string, num: numeric-string, 1: numeric-string, 2: non-empty-string} ' , $ matches );
104
104
105
105
if (preg_match ('/^(?<name>\S+::\S+)/ ' , $ s , $ matches )) {
106
- assertType ('array{0: string, name: non-empty -string, 1: non-empty -string} ' , $ matches );
106
+ assertType ('array{0: string, name: non-falsy -string, 1: non-falsy -string} ' , $ matches );
107
107
}
108
- assertType ('array{}|array{0: string, name: non-empty -string, 1: non-empty -string} ' , $ matches );
108
+ assertType ('array{}|array{0: string, name: non-falsy -string, 1: non-falsy -string} ' , $ matches );
109
109
110
110
if (preg_match ('/^(?<name>\S+::\S+)(?:(?<dataname> with data set (?:#\d+|"[^"]+"))\s\()?/ ' , $ s , $ matches )) {
111
- assertType ('array{0: string, name: non-empty -string, 1: non-empty -string, dataname?: non-empty -string, 2?: non-empty -string} ' , $ matches );
111
+ assertType ('array{0: string, name: non-falsy -string, 1: non-falsy -string, dataname?: non-falsy -string, 2?: non-falsy -string} ' , $ matches );
112
112
}
113
- assertType ('array{}|array{0: string, name: non-empty -string, 1: non-empty -string, dataname?: non-empty -string, 2?: non-empty -string} ' , $ matches );
113
+ assertType ('array{}|array{0: string, name: non-falsy -string, 1: non-falsy -string, dataname?: non-falsy -string, 2?: non-falsy -string} ' , $ matches );
114
114
}
115
115
116
116
function doOffsetCapture (string $ s ): void {
@@ -236,10 +236,10 @@ function doFoo(string $row): void
236
236
assertType ("array{string, 'ab', 'b'} " , $ matches );
237
237
}
238
238
if (preg_match ('~^(a(b)?)$~ ' , $ row , $ matches ) === 1 ) {
239
- assertType ("array{0: string, 1: non-empty -string, 2?: 'b'} " , $ matches );
239
+ assertType ("array{0: string, 1: non-falsy -string, 2?: 'b'} " , $ matches );
240
240
}
241
241
if (preg_match ('~^(a(b)?)?$~ ' , $ row , $ matches ) === 1 ) {
242
- assertType ("array{0: string, 1?: non-empty -string, 2?: 'b'} " , $ matches );
242
+ assertType ("array{0: string, 1?: non-falsy -string, 2?: 'b'} " , $ matches );
243
243
}
244
244
}
245
245
@@ -249,7 +249,7 @@ function doFoo2(string $row): void
249
249
return ;
250
250
}
251
251
252
- assertType ("array{0: string, 1: string, branchCode: ''|numeric-string, 2: ''|numeric-string, accountNumber: numeric-string, 3: numeric-string, bankCode: numeric-string, 4: numeric-string} " , $ matches );
252
+ assertType ("array{0: string, 1: string, branchCode: ''|numeric-string, 2: ''|numeric-string, accountNumber: numeric-string, 3: numeric-string, bankCode: non-falsy-string& numeric-string, 4: non-falsy-string& numeric-string} " , $ matches );
253
253
}
254
254
255
255
function doFoo3 (string $ row ): void
@@ -258,42 +258,42 @@ function doFoo3(string $row): void
258
258
return ;
259
259
}
260
260
261
- assertType ('array{string, non-empty -string, non-empty -string, numeric-string, numeric-string, numeric-string, numeric-string} ' , $ matches );
261
+ assertType ('array{string, non-falsy -string, non-falsy -string, numeric-string, numeric-string, numeric-string, numeric-string} ' , $ matches );
262
262
}
263
263
264
264
function (string $ size ): void {
265
265
if (preg_match ('~^a\.b(c(\d+)(\d+)(\s+))?d~ ' , $ size , $ matches ) !== 1 ) {
266
266
throw new InvalidArgumentException (sprintf ('Invalid size "%s" ' , $ size ));
267
267
}
268
- assertType ('array{string, non-empty -string, numeric-string, numeric-string, non-empty-string}|array{string} ' , $ matches );
268
+ assertType ('array{string, non-falsy -string, numeric-string, numeric-string, non-empty-string}|array{string} ' , $ matches );
269
269
};
270
270
271
271
function (string $ size ): void {
272
272
if (preg_match ('~^a\.b(c(\d+))?d~ ' , $ size , $ matches ) !== 1 ) {
273
273
throw new InvalidArgumentException (sprintf ('Invalid size "%s" ' , $ size ));
274
274
}
275
- assertType ('array{string, non-empty -string, numeric-string}|array{string} ' , $ matches );
275
+ assertType ('array{string, non-falsy -string, numeric-string}|array{string} ' , $ matches );
276
276
};
277
277
278
278
function (string $ size ): void {
279
279
if (preg_match ('~^a\.b(c(\d+)?)d~ ' , $ size , $ matches ) !== 1 ) {
280
280
throw new InvalidArgumentException (sprintf ('Invalid size "%s" ' , $ size ));
281
281
}
282
- assertType ('array{0: string, 1: non-empty -string, 2?: numeric-string} ' , $ matches );
282
+ assertType ('array{0: string, 1: non-falsy -string, 2?: numeric-string} ' , $ matches );
283
283
};
284
284
285
285
function (string $ size ): void {
286
286
if (preg_match ('~^a\.b(c(\d+)?)?d~ ' , $ size , $ matches ) !== 1 ) {
287
287
throw new InvalidArgumentException (sprintf ('Invalid size "%s" ' , $ size ));
288
288
}
289
- assertType ('array{0: string, 1?: non-empty -string, 2?: numeric-string} ' , $ matches );
289
+ assertType ('array{0: string, 1?: non-falsy -string, 2?: numeric-string} ' , $ matches );
290
290
};
291
291
292
292
function (string $ size ): void {
293
293
if (preg_match ('~^a\.b(c(\d+))d~ ' , $ size , $ matches ) !== 1 ) {
294
294
throw new InvalidArgumentException (sprintf ('Invalid size "%s" ' , $ size ));
295
295
}
296
- assertType ('array{string, non-empty -string, numeric-string} ' , $ matches );
296
+ assertType ('array{string, non-falsy -string, numeric-string} ' , $ matches );
297
297
};
298
298
299
299
function (string $ size ): void {
@@ -321,14 +321,14 @@ function (string $size): void {
321
321
if (preg_match ('~\{(?:(include) \\s+(?:[$]? \\w+(?<!file)) \\s)|(?:(include \\s+file) \\s+(?:[$]? \\w+) \\s)|(?:(include(?:Template|(?: \\s+file))) \\s+(?: \'?.*?\.latte \'?) \\s)~ ' , $ size , $ matches ) !== 1 ) {
322
322
throw new InvalidArgumentException (sprintf ('Invalid size "%s" ' , $ size ));
323
323
}
324
- assertType ("array{0: string, 1: 'include', 2?: non-empty -string, 3?: non-empty -string} " , $ matches );
324
+ assertType ("array{0: string, 1: 'include', 2?: non-falsy -string, 3?: non-falsy -string} " , $ matches );
325
325
};
326
326
327
327
328
328
function bug11277a (string $ value ): void
329
329
{
330
330
if (preg_match ('/^\[(.+,?)*\]$/ ' , $ value , $ matches )) {
331
- assertType ('array{0: string, 1?: non-empty -string} ' , $ matches );
331
+ assertType ('array{0: string, 1?: non-falsy -string} ' , $ matches );
332
332
if (count ($ matches ) === 2 ) {
333
333
assertType ('array{string, string} ' , $ matches ); // could be array{string, non-empty-string}
334
334
}
@@ -338,7 +338,7 @@ function bug11277a(string $value): void
338
338
function bug11277b (string $ value ): void
339
339
{
340
340
if (preg_match ('/^(?:(.+,?)|(x))*$/ ' , $ value , $ matches )) {
341
- assertType ('array{0: string, 1?: non-empty -string, 2?: non-empty-string} ' , $ matches );
341
+ assertType ('array{0: string, 1?: non-falsy -string, 2?: non-empty-string} ' , $ matches );
342
342
if (count ($ matches ) === 2 ) {
343
343
assertType ('array{string, string} ' , $ matches ); // could be array{string, non-empty-string}
344
344
}
@@ -441,13 +441,13 @@ function (string $s): void {
441
441
442
442
function (string $ s ): void {
443
443
if (preg_match ('~^(( \\d{1,6})-)$~ ' , $ s , $ matches ) === 1 ) {
444
- assertType ("array{string, non-empty -string, numeric-string} " , $ matches );
444
+ assertType ("array{string, non-falsy -string, numeric-string} " , $ matches );
445
445
}
446
446
};
447
447
448
448
function (string $ s ): void {
449
449
if (preg_match ('~^(( \\d{1,6}).)$~ ' , $ s , $ matches ) === 1 ) {
450
- assertType ("array{string, non-empty -string, numeric-string} " , $ matches );
450
+ assertType ("array{string, non-falsy -string, numeric-string} " , $ matches );
451
451
}
452
452
};
453
453
@@ -471,13 +471,13 @@ function bug11323(string $s): void {
471
471
assertType ('array{string, non-empty-string, non-empty-string} ' , $ matches );
472
472
}
473
473
if (preg_match ('{([-\p{L}[\]*|\x03\a\b+?{}(?:)-]+[^[:digit:]?{}a-z0-9#-k]+)(a-z)} ' , $ s , $ matches )) {
474
- assertType ("array{string, non-empty -string, 'a-z'} " , $ matches );
474
+ assertType ("array{string, non-falsy -string, 'a-z'} " , $ matches );
475
475
}
476
476
if (preg_match ('{(\d+)(?i)insensitive((?x-i)case SENSITIVE here(?i:insensitive non-capturing group))} ' , $ s , $ matches )) {
477
- assertType ('array{string, numeric-string, non-empty -string} ' , $ matches );
477
+ assertType ('array{string, numeric-string, non-falsy -string} ' , $ matches );
478
478
}
479
479
if (preg_match ('{([]] [^]])} ' , $ s , $ matches )) {
480
- assertType ('array{string, non-empty -string} ' , $ matches );
480
+ assertType ('array{string, non-falsy -string} ' , $ matches );
481
481
}
482
482
if (preg_match ('{([[:digit:]])} ' , $ s , $ matches )) {
483
483
assertType ('array{string, numeric-string} ' , $ matches );
@@ -495,25 +495,25 @@ function bug11323(string $s): void {
495
495
assertType ("array{string, ''|'a', string, non-empty-string, non-empty-string} " , $ matches );
496
496
}
497
497
if (preg_match ('{(.\d)} ' , $ s , $ matches )) {
498
- assertType ('array{string, non-empty -string} ' , $ matches );
498
+ assertType ('array{string, non-falsy -string} ' , $ matches );
499
499
}
500
500
if (preg_match ('{(\d.)} ' , $ s , $ matches )) {
501
- assertType ('array{string, non-empty -string} ' , $ matches );
501
+ assertType ('array{string, non-falsy -string} ' , $ matches );
502
502
}
503
503
if (preg_match ('{(\d\d)} ' , $ s , $ matches )) {
504
- assertType ('array{string, numeric-string} ' , $ matches );
504
+ assertType ('array{string, non-falsy-string& numeric-string} ' , $ matches );
505
505
}
506
506
if (preg_match ('{(.(\d))} ' , $ s , $ matches )) {
507
- assertType ('array{string, non-empty -string, numeric-string} ' , $ matches );
507
+ assertType ('array{string, non-falsy -string, numeric-string} ' , $ matches );
508
508
}
509
509
if (preg_match ('{((\d).)} ' , $ s , $ matches )) {
510
- assertType ('array{string, non-empty -string, numeric-string} ' , $ matches );
510
+ assertType ('array{string, non-falsy -string, numeric-string} ' , $ matches );
511
511
}
512
512
if (preg_match ('{(\d([1-4])\d)} ' , $ s , $ matches )) {
513
- assertType ('array{string, numeric-string, numeric-string} ' , $ matches );
513
+ assertType ('array{string, non-falsy-string& numeric-string, numeric-string} ' , $ matches );
514
514
}
515
515
if (preg_match ('{(x?([1-4])\d)} ' , $ s , $ matches )) {
516
- assertType ('array{string, non-empty -string, numeric-string} ' , $ matches );
516
+ assertType ('array{string, non-falsy -string, numeric-string} ' , $ matches );
517
517
}
518
518
if (preg_match ('{([^1-4])} ' , $ s , $ matches )) {
519
519
assertType ('array{string, non-empty-string} ' , $ matches );
@@ -606,3 +606,22 @@ function (string $s): void {
606
606
assertType ("array{string, 'bam'|'ban'|'bom'|'bon'} " , $ matches );
607
607
}
608
608
};
609
+
610
+ function (string $ s ): void {
611
+ if (preg_match ('/Price: (\s{3}|0)/ ' , $ s , $ matches )) {
612
+ assertType ("array{string, non-empty-string} " , $ matches );
613
+ }
614
+ };
615
+
616
+ function (string $ s ): void {
617
+ if (preg_match ('/Price: (a|0)/ ' , $ s , $ matches )) {
618
+ assertType ("array{string, non-empty-string} " , $ matches );
619
+ }
620
+ };
621
+
622
+ function (string $ s ): void {
623
+ if (preg_match ('/Price: (aa|0)/ ' , $ s , $ matches )) {
624
+ assertType ("array{string, non-empty-string} " , $ matches );
625
+ }
626
+ };
627
+
0 commit comments