about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2024-03-28 11:08:50 +0100
committerGuillaume Gomez <guillaume.gomez@huawei.com>2024-03-28 11:08:50 +0100
commit75fedfc4eaa9fd62160fadd21a98506520748f95 (patch)
treec86d352fafabb3fa3fb4d1329ddf5220ba90262a /src
parent35936c4839dd272646394779d151e060d0f6b3ac (diff)
downloadrust-75fedfc4eaa9fd62160fadd21a98506520748f95.tar.gz
rust-75fedfc4eaa9fd62160fadd21a98506520748f95.zip
Correctly get complete intra-doc link data
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/passes/lint/redundant_explicit_links.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/librustdoc/passes/lint/redundant_explicit_links.rs b/src/librustdoc/passes/lint/redundant_explicit_links.rs
index f7bc5464707..569c17ee36e 100644
--- a/src/librustdoc/passes/lint/redundant_explicit_links.rs
+++ b/src/librustdoc/passes/lint/redundant_explicit_links.rs
@@ -90,7 +90,7 @@ fn check_redundant_explicit_link<'md>(
 ) -> Option<()> {
     let mut broken_line_callback = |link: BrokenLink<'md>| Some((link.reference, "".into()));
     let mut offset_iter = Parser::new_with_broken_link_callback(
-        &doc,
+        doc,
         main_body_opts(),
         Some(&mut broken_line_callback),
     )
@@ -264,6 +264,7 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
     let mut resolvable_link = None;
     let mut resolvable_link_range = None;
     let mut display_link = String::new();
+    let mut is_resolvable = true;
 
     while let Some((event, range)) = offset_iter.next() {
         match event {
@@ -281,6 +282,11 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
                 resolvable_link = Some(code);
                 resolvable_link_range = Some(range);
             }
+            Event::Start(_) => {
+                // If there is anything besides backticks, it's not considered as an intra-doc link
+                // so we ignore it.
+                is_resolvable = false;
+            }
             Event::End(_) => {
                 break;
             }
@@ -288,6 +294,11 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
         }
     }
 
+    if !is_resolvable {
+        resolvable_link_range = None;
+        resolvable_link = None;
+    }
+
     LinkData { resolvable_link, resolvable_link_range, display_link }
 }