fix(markdown_parser): blockquote list splitting and tightness#9990
fix(markdown_parser): blockquote list splitting and tightness#9990jfmcdowell wants to merge 1 commit intobiomejs:mainfrom
Conversation
Blank blockquote continuation lines (`>` + whitespace + newline) between list items no longer split the list or corrupt tightness metadata. Phase 1 (`blank_line_phase_quote_depth_exit`) now falls through when the next quoted content is a sibling item of the same list type and marker, letting Phase 4 consume the blank line and `check_continuation_indent` break at the correct position. Phase 3 (`blank_line_phase_non_quote_classify`) now treats blank lines without a quote prefix as container-escaping when inside a blockquote, preventing them from falsely loosening the blockquote's internal list. Also fixes `is_newline_block` in `to_html` to treat `MdQuotePrefix` as structural-only, preventing trailing newline leaks in tight list items.
|
Merging this PR will not alter performance
Comparing Footnotes
|
Note
This PR was created with AI assistance (Claude Code).
Summary
Blank blockquote continuation lines (
>followed by whitespace + newline) between list items were splitting lists into separate elements and corrupting tightness metadata.Two narrow fixes in
list.rs:blank_line_phase_quote_depth_exit): no longer breaks early when the next quoted content is a sibling item of the same list type and marker. Falls through so Phase 4 consumes the blank>line into the item andcheck_continuation_indentbreaks at the marker position.blank_line_phase_non_quote_classify): blank lines without a quote prefix inside a blockquote are now treated as container-escaping — they break the item without falsely loosening the list.One renderer fix in
to_html.rs:is_newline_blocknow treatsMdQuotePrefixas structural-only, preventing trailing newline leaks in tight list items.Different bullet markers and cross-type transitions still correctly split into separate lists.
Test Plan
just test-crate biome_markdown_parserjust test-markdown-conformance— 652/652, 100%list_in_blockquote.{md,html}fixture covering same-bullet loose, same-ordered loose, same-bullet tight, different-bullet split, and cross-type splitDocs
N/A