diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs index 9395efe4f2..bd80102fae 100644 --- a/crates/hir/src/code_model.rs +++ b/crates/hir/src/code_model.rs @@ -43,8 +43,8 @@ use tt::{Ident, Leaf, Literal, TokenTree}; use crate::{ db::{DefDatabase, HirDatabase}, + doc_links::Resolvable, has_source::HasSource, - link_rewrite::Resolvable, HirDisplay, InFile, Name, }; @@ -234,23 +234,6 @@ impl ModuleDef { ModuleDef::BuiltinType(it) => Some(it.as_name()), } } - - pub fn resolver(&self, db: &D) -> Option { - Some(match self { - ModuleDef::Module(m) => ModuleId::from(m.clone()).resolver(db), - ModuleDef::Function(f) => FunctionId::from(f.clone()).resolver(db), - ModuleDef::Adt(adt) => AdtId::from(adt.clone()).resolver(db), - ModuleDef::EnumVariant(ev) => { - GenericDefId::from(GenericDef::from(ev.clone())).resolver(db) - } - ModuleDef::Const(c) => GenericDefId::from(GenericDef::from(c.clone())).resolver(db), - ModuleDef::Static(s) => StaticId::from(s.clone()).resolver(db), - ModuleDef::Trait(t) => TraitId::from(t.clone()).resolver(db), - ModuleDef::TypeAlias(t) => ModuleId::from(t.module(db)).resolver(db), - // FIXME: This should be a resolver relative to `std/core` - ModuleDef::BuiltinType(_t) => None?, - }) - } } pub use hir_def::{ diff --git a/crates/hir/src/link_rewrite.rs b/crates/hir/src/doc_links.rs similarity index 98% rename from crates/hir/src/link_rewrite.rs rename to crates/hir/src/doc_links.rs index dad3a39cfe..45b26519e0 100644 --- a/crates/hir/src/link_rewrite.rs +++ b/crates/hir/src/doc_links.rs @@ -1,4 +1,4 @@ -//! Resolves and rewrites links in markdown documentation for hovers/completion windows. +//! Resolves links in markdown documentation. use std::iter::once; @@ -113,7 +113,7 @@ fn try_resolve_path(db: &dyn HirDatabase, moddef: &ModuleDef, link_target: &str) .map(|url| url.into_string()) } -// Strip prefixes, suffixes, and inline code marks from the given string. +/// Strip prefixes, suffixes, and inline code marks from the given string. fn strip_prefixes_suffixes(mut s: &str) -> &str { s = s.trim_matches('`'); diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index ae2f1fd4d3..d1f4d78132 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -27,7 +27,7 @@ pub mod diagnostics; mod from_id; mod code_model; -mod link_rewrite; +mod doc_links; mod has_source; @@ -38,8 +38,8 @@ pub use crate::{ Function, GenericDef, HasAttrs, HasVisibility, ImplDef, Local, MacroDef, Module, ModuleDef, ScopeDef, Static, Struct, Trait, Type, TypeAlias, TypeParam, Union, VariantDef, Visibility, }, + doc_links::resolve_doc_link, has_source::HasSource, - link_rewrite::resolve_doc_link, semantics::{original_range, PathResolution, Semantics, SemanticsScope}, }; diff --git a/crates/ide/src/link_rewrite.rs b/crates/ide/src/link_rewrite.rs index a826220e33..ff3200eefb 100644 --- a/crates/ide/src/link_rewrite.rs +++ b/crates/ide/src/link_rewrite.rs @@ -1,4 +1,6 @@ -//! This is a wrapper around [`hir::link_rewrite`] connecting it to the markdown parser. +//! Resolves and rewrites links in markdown documentation. +//! +//! Most of the implementation can be found in [`hir::doc_links`]. use pulldown_cmark::{CowStr, Event, Options, Parser, Tag}; use pulldown_cmark_to_cmark::{cmark_with_options, Options as CmarkOptions};