diff options
| author | bors <bors@rust-lang.org> | 2024-05-25 12:03:07 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-05-25 12:03:07 +0000 |
| commit | 5d10538fb4e3294cdb8d7b95fb0b3e5239598e3f (patch) | |
| tree | db0e1612b84f27e45f9582e54f209b4725c4974b /clippy_lints/src | |
| parent | 674c641ecf2f5ac7b915d9e3896708e92c0e7434 (diff) | |
| parent | 4f98cc6d55aa82612fac031a5828f5fc9deee4bc (diff) | |
Auto merge of #12809 - GuillaumeGomez:missing-backticks-fix, r=y21
Correctly handle closing parens in `missing_backticks` doc lint Fixes #12795. changelog: Correctly handle closing parens in `doc_markdown` lint
Diffstat (limited to 'clippy_lints/src')
| -rw-r--r-- | clippy_lints/src/doc/markdown.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clippy_lints/src/doc/markdown.rs b/clippy_lints/src/doc/markdown.rs index 8a497b5ab0d..41c0bcd55ad 100644 --- a/clippy_lints/src/doc/markdown.rs +++ b/clippy_lints/src/doc/markdown.rs @@ -30,6 +30,7 @@ pub fn check( word = tmp_word; } + let original_len = word.len(); word = word.trim_start_matches(trim_pattern); // Remove leading or trailing single `:` which may be part of a sentence. @@ -44,6 +45,25 @@ pub fn check( continue; } + // Ensure that all reachable matching closing parens are included as well. + let size_diff = original_len - word.len(); + let mut open_parens = 0; + let mut close_parens = 0; + for c in word.chars() { + if c == '(' { + open_parens += 1; + } else if c == ')' { + close_parens += 1; + } + } + while close_parens < open_parens + && let Some(tmp_word) = orig_word.get(size_diff..=(word.len() + size_diff)) + && tmp_word.ends_with(')') + { + word = tmp_word; + close_parens += 1; + } + // Adjust for the current word let offset = word.as_ptr() as usize - text.as_ptr() as usize; let span = Span::new( |
