Commit 8fb607a
authored
fix(interpreter): expand ${...} syntax in arithmetic contexts (#601)
## Summary
- Add `expand_brace_expr_in_arithmetic` to handle `${...}` syntax inside
arithmetic expressions
- Supports `${#arr[@]}`, `${#var}`, `${arr[idx]}`, and `${var}` patterns
- Add `--max-commands` CLI flag to override the default 10k command
limit
- Add 5 end-to-end integration tests covering the full fix chain (lexer
+ parser + interpreter)
Depends on #602 (lexer) and #603 (parser).
## Test plan
- [x] `array_access_with_nested_array_length` — `${names[$RANDOM %
${#names[@]}]}`
- [x] `assignment_with_nested_array_length_in_subscript` — assignment
variant
- [x] `nested_array_subscript_in_arithmetic` — inside `$(())`
- [x] `multiple_nested_subscripts_in_loop` — in a loop with multiple
arrays
- [x] `string_length_in_arithmetic` — `${#var}` in arithmetic
- [x] Full 1000-file JSON generator script runs successfully with
`--max-commands 500000`
- [x] Full test suite passes (0 new failures)
Closes #6011 parent e72ef96 commit 8fb607a
3 files changed
Lines changed: 183 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
71 | 75 | | |
72 | 76 | | |
73 | 77 | | |
| |||
114 | 118 | | |
115 | 119 | | |
116 | 120 | | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
117 | 125 | | |
118 | 126 | | |
119 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7312 | 7312 | | |
7313 | 7313 | | |
7314 | 7314 | | |
7315 | | - | |
7316 | | - | |
7317 | | - | |
7318 | | - | |
7319 | | - | |
7320 | | - | |
7321 | | - | |
| 7315 | + | |
| 7316 | + | |
| 7317 | + | |
| 7318 | + | |
| 7319 | + | |
| 7320 | + | |
| 7321 | + | |
| 7322 | + | |
| 7323 | + | |
| 7324 | + | |
| 7325 | + | |
| 7326 | + | |
| 7327 | + | |
| 7328 | + | |
| 7329 | + | |
| 7330 | + | |
| 7331 | + | |
| 7332 | + | |
| 7333 | + | |
7322 | 7334 | | |
7323 | | - | |
7324 | | - | |
7325 | | - | |
7326 | | - | |
7327 | | - | |
7328 | | - | |
| 7335 | + | |
| 7336 | + | |
7329 | 7337 | | |
7330 | 7338 | | |
7331 | | - | |
| 7339 | + | |
7332 | 7340 | | |
7333 | 7341 | | |
7334 | | - | |
| 7342 | + | |
| 7343 | + | |
| 7344 | + | |
| 7345 | + | |
| 7346 | + | |
| 7347 | + | |
| 7348 | + | |
| 7349 | + | |
| 7350 | + | |
| 7351 | + | |
| 7352 | + | |
| 7353 | + | |
| 7354 | + | |
| 7355 | + | |
| 7356 | + | |
| 7357 | + | |
| 7358 | + | |
| 7359 | + | |
| 7360 | + | |
| 7361 | + | |
| 7362 | + | |
7335 | 7363 | | |
7336 | 7364 | | |
7337 | 7365 | | |
| |||
7412 | 7440 | | |
7413 | 7441 | | |
7414 | 7442 | | |
| 7443 | + | |
| 7444 | + | |
| 7445 | + | |
| 7446 | + | |
| 7447 | + | |
| 7448 | + | |
| 7449 | + | |
| 7450 | + | |
| 7451 | + | |
| 7452 | + | |
| 7453 | + | |
| 7454 | + | |
| 7455 | + | |
| 7456 | + | |
| 7457 | + | |
| 7458 | + | |
| 7459 | + | |
| 7460 | + | |
| 7461 | + | |
| 7462 | + | |
| 7463 | + | |
| 7464 | + | |
| 7465 | + | |
| 7466 | + | |
| 7467 | + | |
| 7468 | + | |
| 7469 | + | |
| 7470 | + | |
| 7471 | + | |
| 7472 | + | |
| 7473 | + | |
| 7474 | + | |
| 7475 | + | |
| 7476 | + | |
| 7477 | + | |
| 7478 | + | |
| 7479 | + | |
| 7480 | + | |
| 7481 | + | |
| 7482 | + | |
| 7483 | + | |
| 7484 | + | |
| 7485 | + | |
| 7486 | + | |
| 7487 | + | |
| 7488 | + | |
| 7489 | + | |
| 7490 | + | |
| 7491 | + | |
| 7492 | + | |
| 7493 | + | |
| 7494 | + | |
| 7495 | + | |
| 7496 | + | |
| 7497 | + | |
7415 | 7498 | | |
7416 | 7499 | | |
7417 | 7500 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
0 commit comments