@@ -592,23 +592,35 @@ fn param_name_hints(
592
592
. filter_map ( |( ( param, _ty) , arg) | {
593
593
// Only annotate hints for expressions that exist in the original file
594
594
let range = sema. original_range_opt ( arg. syntax ( ) ) ?;
595
- let ( param_name, param_syntax ) = match param. as_ref ( ) ? {
596
- Either :: Left ( pat) => ( "self" . to_string ( ) , pat. syntax ( ) ) ,
595
+ let ( param_name, name_syntax ) = match param. as_ref ( ) ? {
596
+ Either :: Left ( pat) => ( "self" . to_string ( ) , pat. name ( ) ) ,
597
597
Either :: Right ( pat) => match pat {
598
- ast:: Pat :: IdentPat ( it) => ( it. name ( ) ?. to_string ( ) , pat . syntax ( ) ) ,
598
+ ast:: Pat :: IdentPat ( it) => ( it. name ( ) ?. to_string ( ) , it . name ( ) ) ,
599
599
_ => return None ,
600
600
} ,
601
601
} ;
602
- Some ( ( sema . original_range_opt ( param_syntax ) , param_name, arg, range) )
602
+ Some ( ( name_syntax , param_name, arg, range) )
603
603
} )
604
604
. filter ( |( _, param_name, arg, _) | {
605
605
!should_hide_param_name_hint ( sema, & callable, param_name, arg)
606
606
} )
607
- . map ( |( param_range, param_name, _, FileRange { range, .. } ) | InlayHint {
608
- range,
609
- kind : InlayKind :: ParameterHint ,
610
- label : param_name,
611
- tooltip : param_range. map ( |it| InlayTooltip :: HoverOffset ( it. file_id , it. range . start ( ) ) ) ,
607
+ . map ( |( param, param_name, _, FileRange { range, .. } ) | {
608
+ let mut tooltip = None ;
609
+ if let Some ( name) = param {
610
+ if let hir:: CallableKind :: Function ( f) = callable. kind ( ) {
611
+ // assert the file is cached so we can map out of macros
612
+ if let Some ( _) = sema. source ( f) {
613
+ tooltip = sema. original_range_opt ( name. syntax ( ) ) ;
614
+ }
615
+ }
616
+ }
617
+
618
+ InlayHint {
619
+ range,
620
+ kind : InlayKind :: ParameterHint ,
621
+ label : param_name,
622
+ tooltip : tooltip. map ( |it| InlayTooltip :: HoverOffset ( it. file_id , it. range . start ( ) ) ) ,
623
+ }
612
624
} ) ;
613
625
614
626
acc. extend ( hints) ;
0 commit comments