@@ -35,8 +35,9 @@ pub(super) fn hints(
35
35
36
36
let param_list = closure. param_list ( ) ?;
37
37
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 ( ) ;
40
41
let callable = ty. as_callable ( sema. db ) ?;
41
42
let ty = callable. return_type ( ) ;
42
43
if arrow. is_none ( ) && ty. is_unit ( ) {
@@ -52,7 +53,7 @@ pub(super) fn hints(
52
53
ty_to_text_edit (
53
54
sema,
54
55
config,
55
- closure . syntax ( ) ,
56
+ descended_closure . syntax ( ) ,
56
57
& ty,
57
58
arrow
58
59
. as_ref ( )
@@ -70,7 +71,7 @@ pub(super) fn hints(
70
71
let mut builder = TextEdit :: builder ( ) ;
71
72
let insert_pos = param_list. syntax ( ) . text_range ( ) . end ( ) ;
72
73
73
- let rendered = match sema. scope ( closure . syntax ( ) ) . and_then ( |scope| {
74
+ let rendered = match sema. scope ( descended_closure . syntax ( ) ) . and_then ( |scope| {
74
75
ty. display_source_code ( scope. db , scope. module ( ) . into ( ) , false ) . ok ( )
75
76
} ) {
76
77
Some ( rendered) => rendered,
@@ -95,7 +96,7 @@ pub(super) fn hints(
95
96
position : InlayHintPosition :: After ,
96
97
pad_left : false ,
97
98
pad_right : false ,
98
- resolve_parent : Some ( closure . syntax ( ) . text_range ( ) ) ,
99
+ resolve_parent,
99
100
} ) ;
100
101
Some ( ( ) )
101
102
}
0 commit comments