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.rs27
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
}