@@ -35,8 +35,9 @@ pub(super) fn hints(
3535
3636 let param_list = closure. param_list ( ) ?;
3737
38- let closure = sema. descend_node_into_attributes ( closure) . pop ( ) ?;
39- let ty = sema. type_of_expr ( & ast:: Expr :: ClosureExpr ( closure. clone ( ) ) ) ?. adjusted ( ) ;
38+ let resolve_parent = Some ( closure. syntax ( ) . text_range ( ) ) ;
39+ let descended_closure = sema. descend_node_into_attributes ( closure. clone ( ) ) . pop ( ) ?;
40+ let ty = sema. type_of_expr ( & ast:: Expr :: ClosureExpr ( descended_closure. clone ( ) ) ) ?. adjusted ( ) ;
4041 let callable = ty. as_callable ( sema. db ) ?;
4142 let ty = callable. return_type ( ) ;
4243 if arrow. is_none ( ) && ty. is_unit ( ) {
@@ -52,7 +53,7 @@ pub(super) fn hints(
5253 ty_to_text_edit (
5354 sema,
5455 config,
55- closure . syntax ( ) ,
56+ descended_closure . syntax ( ) ,
5657 & ty,
5758 arrow
5859 . as_ref ( )
@@ -70,7 +71,7 @@ pub(super) fn hints(
7071 let mut builder = TextEdit :: builder ( ) ;
7172 let insert_pos = param_list. syntax ( ) . text_range ( ) . end ( ) ;
7273
73- let rendered = match sema. scope ( closure . syntax ( ) ) . and_then ( |scope| {
74+ let rendered = match sema. scope ( descended_closure . syntax ( ) ) . and_then ( |scope| {
7475 ty. display_source_code ( scope. db , scope. module ( ) . into ( ) , false ) . ok ( )
7576 } ) {
7677 Some ( rendered) => rendered,
@@ -95,7 +96,7 @@ pub(super) fn hints(
9596 position : InlayHintPosition :: After ,
9697 pad_left : false ,
9798 pad_right : false ,
98- resolve_parent : Some ( closure . syntax ( ) . text_range ( ) ) ,
99+ resolve_parent,
99100 } ) ;
100101 Some ( ( ) )
101102}
0 commit comments