Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/inlay_hints.rs')
| -rw-r--r-- | crates/ide/src/inlay_hints.rs | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 322a9b820a..428b8d1109 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -69,24 +69,17 @@ pub(crate) fn inlay_hints( let mut hints = Vec::new(); - if let Some(range_limit) = range_limit { - let range_limit = range_limit.range; - match file.covering_element(range_limit) { + let get_hints = |node| get_hints(&mut hints, &sema, config, node); + match range_limit { + Some(FileRange { range, .. }) => match file.covering_element(range) { NodeOrToken::Token(_) => return hints, - NodeOrToken::Node(n) => { - for node in n - .descendants() - .filter(|descendant| range_limit.contains_range(descendant.text_range())) - { - get_hints(&mut hints, &sema, config, node); - } - } - } - } else { - for node in file.descendants() { - get_hints(&mut hints, &sema, config, node); - } - } + NodeOrToken::Node(n) => n + .descendants() + .filter(|descendant| range.contains_range(descendant.text_range())) + .for_each(get_hints), + }, + None => file.descendants().for_each(get_hints), + }; hints } |