Commit e776055
Fix heredoc leading whitespace stripping (#52)
* Fix heredoc leading whitespace stripping
The heredoc content was losing leading whitespace due to two issues:
1. In lexer.ts, skipWhitespace() was called before checking for pending
heredocs, which stripped leading whitespace from the first line of
heredoc content. Fixed by moving the heredoc check before skipWhitespace().
2. In Bash.ts, the script normalization (trimStart on every line) was
stripping whitespace from heredoc content. Fixed by making the
normalizeScript function heredoc-aware so it preserves content inside
heredocs while still normalizing the surrounding script.
Added tests for whitespace preservation in heredocs.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* Fix heredoc leading whitespace stripping
The heredoc content was losing leading whitespace due to two issues:
1. In lexer.ts, skipWhitespace() was called before checking for pending
heredocs, which stripped leading whitespace from the first line of
heredoc content. Fixed by moving the heredoc check before skipWhitespace().
2. In Bash.ts, the script normalization (trimStart on every line) was
stripping whitespace from heredoc content. Fixed by making the
normalizeScript function heredoc-aware so it preserves content inside
heredocs while still normalizing the surrounding script.
Added tests for whitespace preservation in heredocs.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* Fix heredoc delimiter matching edge cases
1. Don't use trimStart() for regular << heredocs - delimiter must match
exactly. A line like " EOF" should be content, not end the heredoc.
2. Allow hyphens in heredoc delimiters (e.g., END-TEST) by using
[\w-]+ instead of \w+ in the regex pattern.
Added tests for both edge cases.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* Fix heredoc delimiter matching edge cases
1. Don't use trimStart() for regular << heredocs - delimiter must match
exactly. A line like " EOF" should be content, not end the heredoc.
2. Allow hyphens in heredoc delimiters (e.g., END-TEST) by using
[\w-]+ instead of \w+ in the regex pattern.
Added tests for both edge cases.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
* Don't skip some read tests
---------
Co-authored-by: Claude Opus 4.5 <[email protected]>1 parent 71526aa commit e776055
File tree
4 files changed
+173
-11
lines changed- src
- parser
- spec-tests/cases
- syntax
4 files changed
+173
-11
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
| 354 | + | |
| 355 | + | |
354 | 356 | | |
355 | 357 | | |
356 | | - | |
357 | | - | |
358 | | - | |
359 | | - | |
| 358 | + | |
360 | 359 | | |
361 | 360 | | |
362 | 361 | | |
| |||
449 | 448 | | |
450 | 449 | | |
451 | 450 | | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
244 | 244 | | |
245 | 245 | | |
246 | 246 | | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
| 247 | + | |
| 248 | + | |
252 | 249 | | |
253 | 250 | | |
254 | 251 | | |
| |||
258 | 255 | | |
259 | 256 | | |
260 | 257 | | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
261 | 262 | | |
262 | 263 | | |
263 | 264 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
416 | 416 | | |
417 | 417 | | |
418 | 418 | | |
419 | | - | |
420 | 419 | | |
421 | 420 | | |
422 | 421 | | |
| |||
444 | 443 | | |
445 | 444 | | |
446 | 445 | | |
447 | | - | |
448 | 446 | | |
449 | 447 | | |
450 | 448 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
125 | 125 | | |
126 | 126 | | |
127 | 127 | | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
128 | 232 | | |
0 commit comments