summary refs log tree commit diff
path: root/compiler/rustc_resolve/src/rustdoc.rs
diff options
context:
space:
mode:
authorKyle Lin <minecraft.kyle.train@gmail.com>2023-07-02 23:32:46 +0800
committerKyle Lin <minecraft.kyle.train@gmail.com>2023-08-18 15:19:22 +0800
commitecb26376e5d4a03bc5f536b315161d5450bd914e (patch)
tree3567807ce134dd2af638bc05f681f6221b3dc3e3 /compiler/rustc_resolve/src/rustdoc.rs
parent78c85f439f04f2aa484a9f1be3133d74bda87c7d (diff)
downloadrust-ecb26376e5d4a03bc5f536b315161d5450bd914e.tar.gz
rust-ecb26376e5d4a03bc5f536b315161d5450bd914e.zip
narrow down the lint trigger constraint
Diffstat (limited to 'compiler/rustc_resolve/src/rustdoc.rs')
-rw-r--r--compiler/rustc_resolve/src/rustdoc.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/compiler/rustc_resolve/src/rustdoc.rs b/compiler/rustc_resolve/src/rustdoc.rs
index cbda0535c89..ba7417b6dda 100644
--- a/compiler/rustc_resolve/src/rustdoc.rs
+++ b/compiler/rustc_resolve/src/rustdoc.rs
@@ -1,4 +1,4 @@
-use pulldown_cmark::{BrokenLink, Event, LinkType, Options, Parser, Tag};
+use pulldown_cmark::{BrokenLink, CowStr, Event, LinkType, Options, Parser, Tag};
 use rustc_ast as ast;
 use rustc_ast::util::comments::beautify_doc_string;
 use rustc_data_structures::fx::FxHashMap;
@@ -436,15 +436,22 @@ fn parse_links<'md>(doc: &'md str) -> Vec<Box<str>> {
 fn collect_link_data<'input, 'callback>(
     event_iter: &mut Parser<'input, 'callback>,
 ) -> Option<Box<str>> {
-    let mut display_text = None;
+    let mut display_text: Option<String> = None;
+    let mut append_text = |text: CowStr<'_>| {
+        if let Some(display_text) = &mut display_text {
+            display_text.push_str(&text);
+        } else {
+            display_text = Some(text.to_string());
+        }
+    };
 
     while let Some(event) = event_iter.next() {
         match event {
-            Event::Text(code) => {
-                display_text = Some(code.to_string().into_boxed_str());
+            Event::Text(text) => {
+                append_text(text);
             }
             Event::Code(code) => {
-                display_text = Some(code.to_string().into_boxed_str());
+                append_text(code);
             }
             Event::End(_) => {
                 break;
@@ -453,5 +460,5 @@ fn collect_link_data<'input, 'callback>(
         }
     }
 
-    display_text
+    display_text.map(String::into_boxed_str)
 }