fn parse_and_walk(input: &str) {
let md: crate::MarkdownFile<'_> = crate::MarkdownFile::parse(input);
for section in &md.sections {
match section {
crate::Section::UnorderedList { items } => {
for &span in md.item_spans(*items) {
let _ = md.inlines(span);
}
}
crate::Section::OrderedList { items, .. } => {
for &span in md.item_spans(*items) {
let _ = md.inlines(span);
}
}
crate::Section::Heading { content, .. }
| crate::Section::Paragraph { content }
| crate::Section::Blockquote { content } => {
let _ = md.inlines(*content);
}
crate::Section::CodeBlock { .. } | crate::Section::HorizontalRule => {}
}
}
}
#[test]
fn fuzz_deep_emphasis_recursion() {
parse_and_walk(
"\n\n\n****************************************************\\*************b*****************************************************\\*************b*****************\\********************b*****************\\*********\\{***\\{***\\{***********\\********************b*****************\\*********\\{***\\{***\\{***\\{*********\\",
);
}