Commit f291848
committed
fix(flow): handle lesser array length guards
Narrow array lengths through complementary less-than branches. Preserve
condition flow through explicit empty else blocks and clamp exclusive
bounds at i64::MAX to avoid overflowing during inference.
Fixes #1207
Assisted-by: Codex1 parent 4bea3ae commit f291848
4 files changed
Lines changed: 84 additions & 19 deletions
File tree
- crates/emmylua_code_analysis/src
- compilation
- analyzer/flow/bind_analyze
- test
- semantic/infer/narrow/condition_flow
Lines changed: 1 addition & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
164 | | - | |
165 | 164 | | |
166 | 165 | | |
167 | 166 | | |
| |||
764 | 763 | | |
765 | 764 | | |
766 | 765 | | |
767 | | - | |
768 | 766 | | |
769 | 767 | | |
770 | 768 | | |
| |||
774 | 772 | | |
775 | 773 | | |
776 | 774 | | |
777 | | - | |
778 | 775 | | |
779 | 776 | | |
780 | 777 | | |
| |||
1114 | 1111 | | |
1115 | 1112 | | |
1116 | 1113 | | |
1117 | | - | |
1118 | 1114 | | |
1119 | 1115 | | |
1120 | 1116 | | |
| |||
1128 | 1124 | | |
1129 | 1125 | | |
1130 | 1126 | | |
1131 | | - | |
1132 | | - | |
1133 | | - | |
| 1127 | + | |
1134 | 1128 | | |
1135 | 1129 | | |
1136 | 1130 | | |
| |||
1146 | 1140 | | |
1147 | 1141 | | |
1148 | 1142 | | |
1149 | | - | |
1150 | 1143 | | |
1151 | 1144 | | |
1152 | 1145 | | |
| |||
Lines changed: 51 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3155 | 3155 | | |
3156 | 3156 | | |
3157 | 3157 | | |
| 3158 | + | |
| 3159 | + | |
| 3160 | + | |
| 3161 | + | |
| 3162 | + | |
| 3163 | + | |
| 3164 | + | |
| 3165 | + | |
| 3166 | + | |
| 3167 | + | |
| 3168 | + | |
| 3169 | + | |
| 3170 | + | |
| 3171 | + | |
| 3172 | + | |
| 3173 | + | |
| 3174 | + | |
| 3175 | + | |
| 3176 | + | |
| 3177 | + | |
| 3178 | + | |
| 3179 | + | |
| 3180 | + | |
| 3181 | + | |
| 3182 | + | |
| 3183 | + | |
| 3184 | + | |
| 3185 | + | |
| 3186 | + | |
| 3187 | + | |
| 3188 | + | |
| 3189 | + | |
| 3190 | + | |
| 3191 | + | |
| 3192 | + | |
| 3193 | + | |
| 3194 | + | |
| 3195 | + | |
| 3196 | + | |
| 3197 | + | |
| 3198 | + | |
| 3199 | + | |
| 3200 | + | |
| 3201 | + | |
| 3202 | + | |
| 3203 | + | |
| 3204 | + | |
| 3205 | + | |
| 3206 | + | |
| 3207 | + | |
| 3208 | + | |
3158 | 3209 | | |
3159 | 3210 | | |
3160 | 3211 | | |
| |||
Lines changed: 28 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
| 66 | + | |
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
| 74 | + | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
85 | 106 | | |
86 | 107 | | |
87 | 108 | | |
| |||
177 | 198 | | |
178 | 199 | | |
179 | 200 | | |
180 | | - | |
| 201 | + | |
181 | 202 | | |
182 | 203 | | |
183 | 204 | | |
184 | 205 | | |
185 | 206 | | |
186 | 207 | | |
187 | 208 | | |
188 | | - | |
| 209 | + | |
189 | 210 | | |
190 | 211 | | |
191 | 212 | | |
| |||
217 | 238 | | |
218 | 239 | | |
219 | 240 | | |
220 | | - | |
| 241 | + | |
221 | 242 | | |
222 | 243 | | |
223 | 244 | | |
| |||
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
293 | 293 | | |
294 | 294 | | |
295 | 295 | | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
300 | 300 | | |
301 | 301 | | |
302 | 302 | | |
| |||
0 commit comments