@@ -194,8 +194,12 @@ fn get_bind_pat_hints(
194
194
if should_not_display_type_hint ( sema, & pat, & ty) {
195
195
return None ;
196
196
}
197
+
197
198
acc. push ( InlayHint {
198
- range : pat. syntax ( ) . text_range ( ) ,
199
+ range : match pat. name ( ) {
200
+ Some ( name) => name. syntax ( ) . text_range ( ) ,
201
+ None => pat. syntax ( ) . text_range ( ) ,
202
+ } ,
199
203
kind : InlayKind :: TypeHint ,
200
204
label : hint_iterator ( sema, & famous_defs, config, & ty)
201
205
. unwrap_or_else ( || ty. display_truncated ( sema. db , config. max_length ) . to_string ( ) . into ( ) ) ,
@@ -799,6 +803,28 @@ fn main() {
799
803
) ;
800
804
}
801
805
806
+ #[ test]
807
+ fn type_hints_bindings_after_at ( ) {
808
+ check_types (
809
+ r#"
810
+ //- minicore: option
811
+ fn main() {
812
+ let ref foo @ bar @ ref mut baz = 0;
813
+ //^^^ &i32
814
+ //^^^ i32
815
+ //^^^ &mut i32
816
+ let [x @ ..] = [0];
817
+ //^ [i32; 1]
818
+ if let x @ Some(_) = Some(0) {}
819
+ //^ Option<i32>
820
+ let foo @ (bar, baz) = (3, 3);
821
+ //^^^ (i32, i32)
822
+ //^^^ i32
823
+ //^^^ i32
824
+ }"# ,
825
+ ) ;
826
+ }
827
+
802
828
#[ test]
803
829
fn default_generic_types_should_not_be_displayed ( ) {
804
830
check (
@@ -839,7 +865,7 @@ impl<T> Iterator for SomeIter<T> {
839
865
840
866
fn main() {
841
867
let mut some_iter = SomeIter::new();
842
- //^^^^ ^^^^^^^^^ SomeIter<Take<Repeat<i32>>>
868
+ // ^^^^^^^^^ SomeIter<Take<Repeat<i32>>>
843
869
some_iter.push(iter::repeat(2).take(2));
844
870
let iter_of_iters = some_iter.take(2);
845
871
//^^^^^^^^^^^^^ impl Iterator<Item = impl Iterator<Item = i32>>
@@ -938,7 +964,7 @@ fn main() {
938
964
//^^^^ i32
939
965
let test: i32 = 33;
940
966
let mut test = 33;
941
- //^^^^ ^^^^ i32
967
+ // ^^^^ i32
942
968
let _ = 22;
943
969
let test = "test";
944
970
//^^^^ &str
@@ -1048,7 +1074,7 @@ impl<T> IntoIterator for Vec<T> {
1048
1074
1049
1075
fn main() {
1050
1076
let mut data = Vec::new();
1051
- //^^^^ ^^^^ Vec<&str>
1077
+ // ^^^^ Vec<&str>
1052
1078
data.push("foo");
1053
1079
for i in
1054
1080
@@ -1076,7 +1102,7 @@ impl<T> IntoIterator for Vec<T> {
1076
1102
1077
1103
fn main() {
1078
1104
let mut data = Vec::new();
1079
- //^^^^ ^^^^ Vec<&str>
1105
+ // ^^^^ Vec<&str>
1080
1106
data.push("foo");
1081
1107
for i in data {
1082
1108
//^ &str
@@ -1153,7 +1179,7 @@ fn main() {
1153
1179
r#"
1154
1180
fn main() {
1155
1181
let mut start = 0;
1156
- //^^^^ ^^^^^ i32
1182
+ // ^^^^^ i32
1157
1183
(0..2).for_each(|increment| { start += increment; });
1158
1184
//^^^^^^^^^ i32
1159
1185
0 commit comments