]> git.lizzy.rs Git - rust.git/commitdiff
Simplify
authorLukas Wirth <lukastw97@gmail.com>
Mon, 26 Jul 2021 11:30:41 +0000 (13:30 +0200)
committerLukas Wirth <lukastw97@gmail.com>
Mon, 26 Jul 2021 18:26:24 +0000 (20:26 +0200)
crates/ide/src/doc_links.rs
crates/ide/src/goto_definition.rs
crates/ide/src/hover.rs
crates/ide/src/syntax_highlighting/inject.rs

index df36e8ed7e445a8fd4393982764db57c65c3a3b4..40e570bbbaeee0db442ecadd1713e3f8900f3ec3 100644 (file)
@@ -24,6 +24,7 @@
     FilePosition, Semantics,
 };
 
+/// Weblink to an item's documentation.
 pub(crate) type DocumentationLink = String;
 
 /// Rewrite documentation links in markdown to point to an online host (e.g. docs.rs)
index ef4fa9680070c8a6516cc5625c45b260f1e7a552..ca22b10dfcb53edda387d21e13ebca94eb0568b8 100644 (file)
@@ -43,11 +43,10 @@ pub(crate) fn goto_definition(
     let parent = token.parent()?;
     if let Some(_) = ast::Comment::cast(token.clone()) {
         let (attributes, def) = doc_attributes(&sema, &parent)?;
-
         let (docs, doc_mapping) = attributes.docs_with_rangemap(db)?;
         let (_, link, ns) =
-            extract_definitions_from_docs(&docs).into_iter().find(|(range, ..)| {
-                doc_mapping.map(*range).map_or(false, |InFile { file_id, value: range }| {
+            extract_definitions_from_docs(&docs).into_iter().find(|&(range, ..)| {
+                doc_mapping.map(range).map_or(false, |InFile { file_id, value: range }| {
                     file_id == position.file_id.into() && range.contains(position.offset)
                 })
             })?;
index 5a23e05ae8810d6658ec36b9ee6753b795207d00..35601f2efc7a0d9df7d43c1b99d1dcbd7879c1bf 100644 (file)
@@ -120,12 +120,8 @@ pub(crate) fn hover(
                     let (docs, doc_mapping) = attributes.docs_with_rangemap(db)?;
                     let (idl_range, link, ns) =
                         extract_definitions_from_docs(&docs).into_iter().find_map(|(range, link, ns)| {
-                            let hir::InFile { file_id, value: range } = doc_mapping.map(range)?;
-                            if file_id == position.file_id.into() && range.contains(position.offset) {
-                                Some((range, link, ns))
-                            } else {
-                                None
-                            }
+                            let hir::InFile { file_id, value: mapped_range } = doc_mapping.map(range)?;
+                            (file_id == position.file_id.into() && mapped_range.contains(position.offset)).then(||(mapped_range, link, ns))
                         })?;
                     range = Some(idl_range);
                     resolve_doc_path_for_def(db, def, &link, ns).map(Definition::ModuleDef)
index 72da4bc0f1f6ac203f4ab7acdd5008e1473f3731..7c9fd46fc57958563e2afb2368c52d176b91c46b 100644 (file)
@@ -107,9 +107,11 @@ pub(super) fn doc_comment(
         extract_definitions_from_docs(&docs)
             .into_iter()
             .filter_map(|(range, link, ns)| {
-                let def = resolve_doc_path_for_def(sema.db, def, &link, ns)?;
-                let InFile { file_id, value: range } = doc_mapping.map(range)?;
-                (file_id == node.file_id).then(|| (range, def))
+                doc_mapping.map(range).filter(|mapping| mapping.file_id == node.file_id).and_then(
+                    |InFile { value: mapped_range, .. }| {
+                        Some(mapped_range).zip(resolve_doc_path_for_def(sema.db, def, &link, ns))
+                    },
+                )
             })
             .for_each(|(range, def)| {
                 hl.add(HlRange {