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 | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index ea1f673e5b..5cab8efa79 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -18,7 +18,11 @@ use ide_db::{ }; use itertools::{Itertools, multizip}; use span::Edition; -use syntax::{AstNode, SyntaxKind::*, SyntaxNode, T, ast}; +use syntax::{ + AstNode, + SyntaxKind::{self, *}, + SyntaxNode, T, ast, +}; use crate::{ FileId, FilePosition, NavigationTarget, RangeInfo, Runnable, TryToNav, @@ -274,11 +278,13 @@ fn hover_offset( } class => { - let is_def = matches!(class, IdentClass::NameClass(_)); + let render_extras = matches!(class, IdentClass::NameClass(_)) + // Render extra information for `Self` keyword as well + || ast::NameRef::cast(node.clone()).is_some_and(|name_ref| name_ref.token_kind() == SyntaxKind::SELF_TYPE_KW); multizip(( class.definitions(), iter::repeat(None), - iter::repeat(is_def), + iter::repeat(render_extras), iter::repeat(node), )) .collect::<Vec<_>>() @@ -422,7 +428,7 @@ pub(crate) fn hover_for_definition( subst: Option<GenericSubstitution>, scope_node: &SyntaxNode, macro_arm: Option<u32>, - hovered_definition: bool, + render_extras: bool, config: &HoverConfig, edition: Edition, display_target: DisplayTarget, @@ -456,7 +462,7 @@ pub(crate) fn hover_for_definition( famous_defs.as_ref(), ¬able_traits, macro_arm, - hovered_definition, + render_extras, subst_types.as_ref(), config, edition, |