diff --git a/clippy_lints/src/doc.rs b/clippy_lints/src/doc.rs index d6c96fa62a9..030c56cb81b 100644 --- a/clippy_lints/src/doc.rs +++ b/clippy_lints/src/doc.rs @@ -281,6 +281,10 @@ fn check_word(cx: &EarlyContext<'_>, word: &str, span: Span) { s != "_" && !s.contains("\\_") && s.contains('_') } + fn has_hyphen(s: &str) -> bool { + s != "-" && s.contains('-') + } + if let Ok(url) = Url::parse(word) { // try to get around the fact that `foo::bar` parses as a valid URL if !url.cannot_be_a_base() { @@ -295,6 +299,11 @@ fn check_word(cx: &EarlyContext<'_>, word: &str, span: Span) { } } + // We assume that mixed-case words are not meant to be put inside bacticks. (Issue #2343) + if has_underscore(word) && has_hyphen(word) { + return; + } + if has_underscore(word) || word.contains("::") || is_camel_case(word) { span_lint( cx, diff --git a/tests/ui/doc.rs b/tests/ui/doc.rs index c09cacd6be0..d4ba83a86f3 100644 --- a/tests/ui/doc.rs +++ b/tests/ui/doc.rs @@ -181,3 +181,7 @@ fn issue_2395() {} /// An iterator over mycrate::Collection's values. /// It should not lint a `'static` lifetime in ticks. fn issue_2210() {} + +/// This should not cause the lint to trigger: +/// #REQ-data-family.lint_partof_exists +fn issue_2343() {}