Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/documentation.rs')
-rw-r--r--crates/ide-db/src/documentation.rs23
1 files changed, 12 insertions, 11 deletions
diff --git a/crates/ide-db/src/documentation.rs b/crates/ide-db/src/documentation.rs
index 58e77b95c3..5e443badf9 100644
--- a/crates/ide-db/src/documentation.rs
+++ b/crates/ide-db/src/documentation.rs
@@ -2,7 +2,7 @@
use either::Either;
use hir::{
db::{DefDatabase, HirDatabase},
- resolve_doc_path_on, AttrId, AttrSourceMap, AttrsWithOwner, HasAttrs, InFile,
+ resolve_doc_path_on, sym, AttrId, AttrSourceMap, AttrsWithOwner, HasAttrs, InFile,
};
use itertools::Itertools;
use syntax::{
@@ -92,7 +92,7 @@ pub fn docs_with_rangemap(
attrs: &AttrsWithOwner,
) -> Option<(Documentation, DocsRangeMap)> {
let docs = attrs
- .by_key("doc")
+ .by_key(&sym::doc)
.attrs()
.filter_map(|attr| attr.string_value_unescape().map(|s| (s, attr.id)));
let indent = doc_indent(attrs);
@@ -134,7 +134,7 @@ pub fn docs_with_rangemap(
}
pub fn docs_from_attrs(attrs: &hir::Attrs) -> Option<String> {
- let docs = attrs.by_key("doc").attrs().filter_map(|attr| attr.string_value_unescape());
+ let docs = attrs.by_key(&sym::doc).attrs().filter_map(|attr| attr.string_value_unescape());
let indent = doc_indent(attrs);
let mut buf = String::new();
for doc in docs {
@@ -269,12 +269,13 @@ fn get_doc_string_in_attr(it: &ast::Attr) -> Option<ast::String> {
}
fn doc_indent(attrs: &hir::Attrs) -> usize {
- attrs
- .by_key("doc")
- .attrs()
- .filter_map(|attr| attr.string_value()) // no need to use unescape version here
- .flat_map(|s| s.lines())
- .filter_map(|line| line.chars().position(|c| !c.is_whitespace()))
- .min()
- .unwrap_or(0)
+ let mut min = !0;
+ for val in attrs.by_key(&sym::doc).attrs().filter_map(|attr| attr.string_value_unescape()) {
+ if let Some(m) =
+ val.lines().filter_map(|line| line.chars().position(|c| !c.is_whitespace())).min()
+ {
+ min = min.min(m);
+ }
+ }
+ min
}