@@ -1011,7 +1011,65 @@ function bug12749f(string $str): void
10111011}
10121012}
10131013
1014- function bug12397 (string $ string ) : array {
1014+ function bug12397 (string $ string ): void {
10151015$ m = preg_match ('#\b([A-Z]{2,})-(\d+)# ' , $ string , $ match );
10161016assertType ('list{0?: string, 1?: non-falsy-string, 2?: numeric-string} ' , $ match );
10171017}
1018+
1019+ function bug12792 (string $ string ): void {
1020+ if (preg_match ('~a\Kb~ ' , $ string , $ match ) === 1 ) {
1021+ assertType ('array{string} ' , $ match ); // could be array{'b'}
1022+ }
1023+
1024+ if (preg_match ('~a\K~ ' , $ string , $ match ) === 1 ) {
1025+ assertType ('array{string} ' , $ match ); // could be array{''}
1026+ }
1027+
1028+ if (preg_match ('~a\K.+~ ' , $ string , $ match ) === 1 ) {
1029+ assertType ('array{string} ' , $ match ); // could be array{non-empty-string}
1030+ }
1031+
1032+ if (preg_match ('~a\K.*~ ' , $ string , $ match ) === 1 ) {
1033+ assertType ('array{string} ' , $ match );
1034+ }
1035+
1036+ if (preg_match ('~a\K(.+)~ ' , $ string , $ match ) === 1 ) {
1037+ assertType ('array{string, non-empty-string} ' , $ match ); // could be array{non-empty-string, non-empty-string}
1038+ }
1039+
1040+ if (preg_match ('~a\K(.*)~ ' , $ string , $ match ) === 1 ) {
1041+ assertType ('array{string, string} ' , $ match );
1042+ }
1043+
1044+ if (preg_match ('~a\K(.+?)~ ' , $ string , $ match ) === 1 ) {
1045+ assertType ('array{string, non-empty-string} ' , $ match ); // could be array{non-empty-string, non-empty-string}
1046+ }
1047+
1048+ if (preg_match ('~a\K(.*?)~ ' , $ string , $ match ) === 1 ) {
1049+ assertType ('array{string, string} ' , $ match );
1050+ }
1051+
1052+ if (preg_match ('~a\K(?=.+)~ ' , $ string , $ match ) === 1 ) {
1053+ assertType ('array{string} ' , $ match ); // could be array{''}
1054+ }
1055+
1056+ if (preg_match ('~a\K(?=.*)~ ' , $ string , $ match ) === 1 ) {
1057+ assertType ('array{string} ' , $ match ); // could be array{''}
1058+ }
1059+
1060+ if (preg_match ('~a(?:x\Kb|c)~ ' , $ string , $ match ) === 1 ) {
1061+ assertType ('array{string} ' , $ match ); // could be array{'ac'|'b'}
1062+ }
1063+
1064+ if (preg_match ('~a(?:c|x\Kb)~ ' , $ string , $ match ) === 1 ) {
1065+ assertType ('array{string} ' , $ match ); // could be array{'ac'|'b'}
1066+ }
1067+
1068+ if (preg_match ('~a(y|(?:x\Kb|c))d~ ' , $ string , $ match ) === 1 ) {
1069+ assertType ('array{string, non-empty-string} ' , $ match ); // could be array{'acd'|'ayd'|'bd', 'c'|'xb'|'y'}
1070+ }
1071+
1072+ if (preg_match ('~a((?:c|x\Kb)|y)d~ ' , $ string , $ match ) === 1 ) {
1073+ assertType ('array{string, non-empty-string} ' , $ match ); // could be array{'acd'|'ayd'|'bd', 'c'|'xb'|'y'}
1074+ }
1075+ }
0 commit comments