diff options
| author | Michael Howell <michael@notriddle.com> | 2024-05-18 14:34:52 -0700 |
|---|---|---|
| committer | Michael Howell <michael@notriddle.com> | 2024-05-18 16:19:41 -0700 |
| commit | b5cf8b8277fc39bf398f620c8f6d50b56821155c (patch) | |
| tree | 1af5b856a0b05e5f6707a4a636ccd8a4ec09d8f4 | |
| parent | 680256f3ce369da4d305bb4e0c037672d2625b8b (diff) | |
| download | rust-b5cf8b8277fc39bf398f620c8f6d50b56821155c.tar.gz rust-b5cf8b8277fc39bf398f620c8f6d50b56821155c.zip | |
doc_lazy_continuation: do not warn on End events
This avoids event spans that would otherwise cause crashes, since an End's span covers the range of the tag (which will be earlier than the line break within the tag).
| -rw-r--r-- | clippy_lints/src/doc/mod.rs | 3 | ||||
| -rw-r--r-- | tests/ui/doc/doc_lazy_list.fixed | 35 | ||||
| -rw-r--r-- | tests/ui/doc/doc_lazy_list.rs | 35 | ||||
| -rw-r--r-- | tests/ui/doc/doc_lazy_list.stderr | 26 |
4 files changed, 97 insertions, 2 deletions
diff --git a/clippy_lints/src/doc/mod.rs b/clippy_lints/src/doc/mod.rs index 9ee4aad337d..81c47d07c35 100644 --- a/clippy_lints/src/doc/mod.rs +++ b/clippy_lints/src/doc/mod.rs @@ -750,10 +750,11 @@ fn check_doc<'a, Events: Iterator<Item = (pulldown_cmark::Event<'a>, Range<usize Start(_tag) | End(_tag) => (), // We don't care about other tags SoftBreak | HardBreak => { if !containers.is_empty() - && let Some((_next_event, next_range)) = events.peek() + && let Some((next_event, next_range)) = events.peek() && let Some(next_span) = fragments.span(cx, next_range.clone()) && let Some(span) = fragments.span(cx, range.clone()) && !in_footnote_definition + && !matches!(next_event, End(_)) { lazy_continuation::check( cx, diff --git a/tests/ui/doc/doc_lazy_list.fixed b/tests/ui/doc/doc_lazy_list.fixed index e19371ea9aa..409e6b0bc22 100644 --- a/tests/ui/doc/doc_lazy_list.fixed +++ b/tests/ui/doc/doc_lazy_list.fixed @@ -40,3 +40,38 @@ fn six() {} /// /// this is not a lazy continuation fn seven() {} + +#[rustfmt::skip] +// https://github.com/rust-lang/rust-clippy/pull/12770#issuecomment-2118601768 +/// Returns a list of ProtocolDescriptors from a Serde JSON input. +/// +/// Defined Protocol Identifiers for the Protocol Descriptor +/// We intentionally omit deprecated profile identifiers. +/// From Bluetooth Assigned Numbers: +/// https://www.bluetooth.com/specifications/assigned-numbers/service-discovery +/// +/// # Arguments +/// * `protocol_descriptors`: A Json Representation of the ProtocolDescriptors +/// to set up. Example: +/// 'protocol_descriptors': [ +//~^ ERROR: doc list item missing indentation +/// { +/// 'protocol': 25, # u64 Representation of ProtocolIdentifier::AVDTP +/// 'params': [ +/// { +/// 'data': 0x0103 # to indicate 1.3 +/// }, +/// { +/// 'data': 0x0105 # to indicate 1.5 +/// } +/// ] +/// }, +/// { +/// 'protocol': 1, # u64 Representation of ProtocolIdentifier::SDP +/// 'params': [{ +/// 'data': 0x0019 +/// }] +/// } +/// ] +//~^ ERROR: doc list item missing indentation +fn eight() {} diff --git a/tests/ui/doc/doc_lazy_list.rs b/tests/ui/doc/doc_lazy_list.rs index fdfe9afaf1d..30ab448a113 100644 --- a/tests/ui/doc/doc_lazy_list.rs +++ b/tests/ui/doc/doc_lazy_list.rs @@ -40,3 +40,38 @@ fn six() {} /// /// this is not a lazy continuation fn seven() {} + +#[rustfmt::skip] +// https://github.com/rust-lang/rust-clippy/pull/12770#issuecomment-2118601768 +/// Returns a list of ProtocolDescriptors from a Serde JSON input. +/// +/// Defined Protocol Identifiers for the Protocol Descriptor +/// We intentionally omit deprecated profile identifiers. +/// From Bluetooth Assigned Numbers: +/// https://www.bluetooth.com/specifications/assigned-numbers/service-discovery +/// +/// # Arguments +/// * `protocol_descriptors`: A Json Representation of the ProtocolDescriptors +/// to set up. Example: +/// 'protocol_descriptors': [ +//~^ ERROR: doc list item missing indentation +/// { +/// 'protocol': 25, # u64 Representation of ProtocolIdentifier::AVDTP +/// 'params': [ +/// { +/// 'data': 0x0103 # to indicate 1.3 +/// }, +/// { +/// 'data': 0x0105 # to indicate 1.5 +/// } +/// ] +/// }, +/// { +/// 'protocol': 1, # u64 Representation of ProtocolIdentifier::SDP +/// 'params': [{ +/// 'data': 0x0019 +/// }] +/// } +/// ] +//~^ ERROR: doc list item missing indentation +fn eight() {} diff --git a/tests/ui/doc/doc_lazy_list.stderr b/tests/ui/doc/doc_lazy_list.stderr index d0f6279f62d..ddfdc49340c 100644 --- a/tests/ui/doc/doc_lazy_list.stderr +++ b/tests/ui/doc/doc_lazy_list.stderr @@ -108,5 +108,29 @@ help: indent this line LL | /// and so should this | ++ -error: aborting due to 9 previous errors +error: doc list item missing indentation + --> tests/ui/doc/doc_lazy_list.rs:56:5 + | +LL | /// 'protocol_descriptors': [ + | ^ + | + = help: if this is supposed to be its own paragraph, add a blank line +help: indent this line + | +LL | /// 'protocol_descriptors': [ + | + + +error: doc list item missing indentation + --> tests/ui/doc/doc_lazy_list.rs:75:5 + | +LL | /// ] + | ^ + | + = help: if this is supposed to be its own paragraph, add a blank line +help: indent this line + | +LL | /// ] + | + + +error: aborting due to 11 previous errors |
