robobun
ebc0cfeacd
fix(yaml): double-quoted strings with '...' incorrectly trigger document end error ( #23491 )
...
### What does this PR do?
Fixes #23489
The YAML parser was incorrectly treating `...` inside double-quoted
strings as document end markers, causing parse errors for strings
containing ellipsis, particularly affecting internationalized text.
### Example of the bug:
```yaml
balance: "👛 لا تمتلك محفظة... !"
```
This would fail with: `error: Unexpected document end`
### Root cause:
The bug was introduced in commit fcbd57ac48 which attempted to optimize
document marker detection by using `self.line_indent == .none` instead
of tracking newlines with a local flag. However, this check was
incomplete - it didn't track whether we had just processed a newline
character.
### The fix:
Restored the `nl` (newline) flag pattern from the single-quoted scanner
and combined it with the `line_indent` check. Document markers `...` and
`---` are now only recognized when **all** of these conditions are met:
1. We're after a newline (`nl == true`)
2. We're at column 0 (`self.line_indent == .none`)
3. Followed by whitespace or EOF
This allows `...` to appear freely in double-quoted strings while still
correctly recognizing actual document end markers at the start of lines.
### How did you verify your code works?
1. Reproduced the original issue from #23489
2. Applied the fix and verified all test cases pass:
- Original Arabic text with emoji: `"👛 لا تمتلك محفظة... !"`
- Various `...` positions: start, middle, end
- Both single and double quotes
- Multiline strings with indented `...` (issue #22392 )
3. Created regression test in `test/regression/issue/23489.test.ts`
4. Verified existing YAML tests still pass (514 pass, up from 513)
cc @dylan-conway for review
---------
Co-authored-by: Claude Bot <claude-bot@bun.sh >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
2025-10-20 14:19:22 -07:00
..
2025-07-15 22:02:03 -07:00
2024-09-03 21:32:52 -07:00
2024-09-12 16:44:03 -07:00
2025-05-08 23:22:16 -07:00
2024-09-03 21:32:52 -07:00
2024-09-11 17:33:01 -07:00
2025-01-31 22:39:43 -08:00
2025-09-24 15:19:16 -07:00
2024-09-03 21:32:52 -07:00
2025-10-09 19:04:41 -07:00
2024-09-03 21:32:52 -07:00
2025-08-06 06:44:46 -07:00
2025-10-07 18:33:34 -07:00
2025-02-26 16:02:15 -08:00
2024-09-03 21:32:52 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-07-14 00:47:53 -07:00
2025-05-08 23:22:16 -07:00
2025-01-28 17:23:57 -08:00
2025-02-19 20:21:52 -08:00
2025-05-08 23:22:16 -07:00
2025-06-03 13:23:12 -07:00
2025-09-20 00:35:42 -07:00
2025-06-03 23:41:37 -07:00
2025-09-17 03:33:14 -07:00
2025-09-30 19:41:35 -07:00
2025-10-06 19:56:40 -07:00
2025-08-18 16:47:45 -07:00
2025-09-06 01:40:36 -07:00
2025-08-25 17:37:12 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-10-07 12:07:29 -07:00
2024-09-03 21:32:52 -07:00
2024-08-31 02:29:16 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-11-21 17:46:45 -08:00
2024-01-23 20:03:56 -08:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2025-10-08 18:00:38 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2025-09-20 00:35:42 -07:00
2024-09-03 21:32:52 -07:00
2025-10-09 19:04:41 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-08-30 20:14:47 -07:00
2024-12-10 12:43:17 -08:00
2024-12-10 12:43:17 -08:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2025-01-17 22:08:07 -08:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-10-04 18:14:20 -07:00
2025-09-02 23:30:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-05-08 23:22:16 -07:00
2024-09-03 21:32:52 -07:00
2024-06-14 01:50:36 -07:00
2025-09-26 03:54:41 -07:00
2025-09-20 00:35:42 -07:00
2025-09-07 21:43:38 -07:00
2024-09-03 21:32:52 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-09-30 21:47:31 -07:00
2025-09-24 15:19:16 -07:00
2025-09-20 00:35:42 -07:00
2025-10-07 12:07:29 -07:00
2025-09-02 03:26:51 -07:00
2025-05-08 23:22:16 -07:00
2025-09-20 00:35:42 -07:00
2025-07-14 20:50:32 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-07-20 23:38:24 -07:00
2025-05-08 23:22:16 -07:00
2025-03-03 21:38:05 -08:00
2025-09-03 18:57:39 -07:00
2025-09-03 18:57:39 -07:00
2025-09-03 18:57:39 -07:00
2025-09-03 18:57:39 -07:00
2025-05-26 21:18:22 -07:00
2025-05-08 23:22:16 -07:00
2025-08-01 19:30:51 -07:00
2025-08-06 06:39:25 -07:00
2025-09-02 01:59:06 -07:00
2025-05-16 22:30:58 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-10-07 12:07:29 -07:00
2025-09-15 14:24:03 -07:00
2025-09-20 00:35:42 -07:00
2025-10-07 12:07:29 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-09-02 03:26:25 -07:00
2025-07-03 01:06:22 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-10-06 00:39:08 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-07-23 22:31:42 -07:00
2025-10-18 17:53:47 -07:00
2025-08-14 16:34:38 -07:00
2025-08-15 22:35:38 -07:00
2025-08-15 21:25:54 -07:00
2025-09-20 00:35:42 -07:00
2025-09-20 00:35:42 -07:00
2025-08-15 20:59:50 -07:00
2025-10-06 19:28:48 -07:00
2025-08-27 15:31:28 -07:00
2025-09-15 23:37:10 -07:00
2025-09-26 04:59:07 -07:00
2025-09-07 17:42:09 -07:00
2025-09-08 14:12:00 -07:00
2025-09-14 04:14:48 -07:00
2025-09-24 18:25:39 -07:00
2025-09-24 18:25:39 -07:00
2025-09-24 18:29:15 -07:00
2025-10-06 00:37:29 -07:00
2025-09-25 23:52:56 -07:00
2025-09-27 00:55:54 -07:00
2025-10-03 15:55:57 -07:00
2025-10-05 17:22:37 -07:00
2025-10-06 04:44:05 -07:00
2025-10-12 05:40:02 -07:00
2025-10-10 03:48:47 -07:00
2025-10-08 21:25:24 -07:00
2025-10-11 13:34:06 -07:00
2025-10-20 14:19:22 -07:00
2025-10-19 23:29:29 -07:00
2025-10-17 14:49:28 -07:00
2025-10-20 14:07:31 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-09-03 21:32:52 -07:00
2024-10-14 13:43:06 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2025-05-08 23:22:16 -07:00
2024-11-18 19:29:55 -08:00
2024-03-30 20:57:40 -07:00
2025-10-10 03:47:38 -07:00
2025-08-26 16:51:41 -07:00
2025-09-22 22:22:58 -07:00
2025-09-22 22:22:58 -07:00
2025-08-09 05:11:50 -07:00
2025-09-04 18:17:14 -07:00
2025-05-08 23:22:16 -07:00
2025-07-15 22:02:03 -07:00
2025-07-15 22:02:03 -07:00
2025-03-04 14:16:18 -08:00
2025-09-26 22:21:00 -07:00
2025-10-06 16:22:24 -07:00
2025-07-25 13:59:33 -07:00
2025-08-15 22:35:38 -07:00
2025-09-20 00:29:15 -07:00
2025-09-02 01:53:39 -07:00
2025-07-25 22:22:04 -07:00
2025-08-19 18:47:04 -07:00
2025-08-18 03:04:37 -07:00
2025-09-19 17:32:12 -07:00
2025-08-18 16:47:45 -07:00
2025-09-12 23:44:48 -07:00
2025-07-15 22:31:54 -07:00
2025-09-10 18:47:50 -07:00
2025-08-19 18:08:00 -07:00
2025-10-06 06:40:15 -07:00
2025-07-15 16:20:34 -07:00
2025-07-15 16:20:34 -07:00
2025-08-22 22:39:47 -07:00
2025-10-07 22:04:40 -07:00
2025-08-28 17:16:37 -07:00
2025-07-20 23:02:10 -07:00
2025-08-09 06:40:36 -07:00
2025-08-30 01:05:51 -07:00
2025-09-13 01:00:57 -07:00
2025-09-13 01:00:57 -07:00
2025-09-13 01:00:57 -07:00
2025-07-17 04:33:30 -07:00
2025-08-20 00:02:14 -07:00
2025-09-24 16:29:05 -07:00