Skip to content

Commit 13adfed

Browse files
bors[bot]bnjjj
andauthored
Merge #4821
4821: display Doctest code lens before comment r=matklad a=bnjjj close #4785 Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2 parents 28077f9 + 2732fdb commit 13adfed

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

crates/ra_ide/src/display/navigation_target.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ impl NavigationTarget {
135135
db: &RootDatabase,
136136
node: InFile<&dyn ast::NameOwner>,
137137
) -> NavigationTarget {
138-
//FIXME: use `_` instead of empty string
139-
let name = node.value.name().map(|it| it.text().clone()).unwrap_or_default();
138+
let name =
139+
node.value.name().map(|it| it.text().clone()).unwrap_or_else(|| SmolStr::new("_"));
140140
let focus_range =
141141
node.value.name().map(|it| original_range(db, node.with_value(it.syntax())).range);
142142
let frange = original_range(db, node.map(|it| it.syntax()));
@@ -150,6 +150,25 @@ impl NavigationTarget {
150150
)
151151
}
152152

153+
/// Allows `NavigationTarget` to be created from a `DocCommentsOwner` and a `NameOwner`
154+
pub(crate) fn from_doc_commented(
155+
db: &RootDatabase,
156+
named: InFile<&dyn ast::NameOwner>,
157+
node: InFile<&dyn ast::DocCommentsOwner>,
158+
) -> NavigationTarget {
159+
let name =
160+
named.value.name().map(|it| it.text().clone()).unwrap_or_else(|| SmolStr::new("_"));
161+
let frange = original_range(db, node.map(|it| it.syntax()));
162+
163+
NavigationTarget::from_syntax(
164+
frange.file_id,
165+
name,
166+
None,
167+
frange.range,
168+
node.value.syntax().kind(),
169+
)
170+
}
171+
153172
fn from_syntax(
154173
file_id: FileId,
155174
name: SmolStr,

crates/ra_ide/src/runnables.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,15 @@ fn runnable_fn(
171171
let cfg_exprs =
172172
attrs.by_key("cfg").tt_values().map(|subtree| ra_cfg::parse_cfg(subtree)).collect();
173173

174-
let nav = NavigationTarget::from_named(sema.db, InFile::new(file_id.into(), &fn_def));
174+
let nav = if let RunnableKind::DocTest { .. } = kind {
175+
NavigationTarget::from_doc_commented(
176+
sema.db,
177+
InFile::new(file_id.into(), &fn_def),
178+
InFile::new(file_id.into(), &fn_def),
179+
)
180+
} else {
181+
NavigationTarget::from_named(sema.db, InFile::new(file_id.into(), &fn_def))
182+
};
175183
Some(Runnable { nav, kind, cfg_exprs })
176184
}
177185

@@ -419,9 +427,7 @@ mod tests {
419427
full_range: 22..64,
420428
name: "foo",
421429
kind: FN_DEF,
422-
focus_range: Some(
423-
56..59,
424-
),
430+
focus_range: None,
425431
container_name: None,
426432
description: None,
427433
docs: None,
@@ -486,9 +492,7 @@ mod tests {
486492
full_range: 51..105,
487493
name: "foo",
488494
kind: FN_DEF,
489-
focus_range: Some(
490-
97..100,
491-
),
495+
focus_range: None,
492496
container_name: None,
493497
description: None,
494498
docs: None,

0 commit comments

Comments
 (0)