Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/hover.rs')
| -rw-r--r-- | crates/ide/src/hover.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 21bea25a5f..21ff480df4 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -146,9 +146,10 @@ pub(crate) fn hover( if let Some(res) = render::keyword(sema, config, &original_token) { return Some(RangeInfo::new(original_token.text_range(), res)); } - if let res @ Some(_) = - descended.iter().find_map(|token| hover_type_fallback(sema, config, token)) - { + let res = descended + .iter() + .find_map(|token| hover_type_fallback(sema, config, token, &original_token)); + if let res @ Some(_) = res { return res; } } @@ -230,6 +231,7 @@ fn hover_type_fallback( sema: &Semantics<RootDatabase>, config: &HoverConfig, token: &SyntaxToken, + original_token: &SyntaxToken, ) -> Option<RangeInfo<HoverResult>> { let node = token .ancestors() @@ -248,7 +250,10 @@ fn hover_type_fallback( }; let res = render::type_info(sema, config, &expr_or_pat)?; - let range = sema.original_range(&node).range; + let range = sema + .original_range_opt(&node) + .map(|frange| frange.range) + .unwrap_or_else(|| original_token.text_range()); Some(RangeInfo::new(range, res)) } |