@@ -1011,7 +1011,65 @@ function bug12749f(string $str): void
1011
1011
}
1012
1012
}
1013
1013
1014
- function bug12397 (string $ string ) : array {
1014
+ function bug12397 (string $ string ): void {
1015
1015
$ m = preg_match ('#\b([A-Z]{2,})-(\d+)# ' , $ string , $ match );
1016
1016
assertType ('list{0?: string, 1?: non-falsy-string, 2?: numeric-string} ' , $ match );
1017
1017
}
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