@@ -109,26 +109,31 @@ fn get_chaining_hints(
109
109
// Chaining can be defined as an expression whose next sibling tokens are newline and dot
110
110
// Ignoring extra whitespace and comments
111
111
let next = tokens. next ( ) ?. kind ( ) ;
112
- let next_next = tokens. next ( ) ?. kind ( ) ;
113
- if next == SyntaxKind :: WHITESPACE && next_next == T ! [ . ] {
114
- let ty = sema. type_of_expr ( & expr) ?;
115
- if ty. is_unknown ( ) {
116
- return None ;
112
+ if next == SyntaxKind :: WHITESPACE {
113
+ let mut next_next = tokens. next ( ) ?. kind ( ) ;
114
+ while next_next == SyntaxKind :: WHITESPACE {
115
+ next_next = tokens. next ( ) ?. kind ( ) ;
117
116
}
118
- if matches ! ( expr, ast:: Expr :: PathExpr ( _) ) {
119
- if let Some ( hir:: Adt :: Struct ( st) ) = ty. as_adt ( ) {
120
- if st. fields ( sema. db ) . is_empty ( ) {
121
- return None ;
117
+ if next_next == T ! [ . ] {
118
+ let ty = sema. type_of_expr ( & expr) ?;
119
+ if ty. is_unknown ( ) {
120
+ return None ;
121
+ }
122
+ if matches ! ( expr, ast:: Expr :: PathExpr ( _) ) {
123
+ if let Some ( hir:: Adt :: Struct ( st) ) = ty. as_adt ( ) {
124
+ if st. fields ( sema. db ) . is_empty ( ) {
125
+ return None ;
126
+ }
122
127
}
123
128
}
129
+ acc. push ( InlayHint {
130
+ range : expr. syntax ( ) . text_range ( ) ,
131
+ kind : InlayKind :: ChainingHint ,
132
+ label : hint_iterator ( sema, & famous_defs, config, & ty) . unwrap_or_else ( || {
133
+ ty. display_truncated ( sema. db , config. max_length ) . to_string ( ) . into ( )
134
+ } ) ,
135
+ } ) ;
124
136
}
125
- acc. push ( InlayHint {
126
- range : expr. syntax ( ) . text_range ( ) ,
127
- kind : InlayKind :: ChainingHint ,
128
- label : hint_iterator ( sema, & famous_defs, config, & ty) . unwrap_or_else ( || {
129
- ty. display_truncated ( sema. db , config. max_length ) . to_string ( ) . into ( )
130
- } ) ,
131
- } ) ;
132
137
}
133
138
Some ( ( ) )
134
139
}
@@ -983,6 +988,7 @@ struct C;
983
988
fn main() {
984
989
let c = A(B(C))
985
990
.into_b() // This is a comment
991
+ // This is another comment
986
992
.into_c();
987
993
}
988
994
"# ,
0 commit comments