@@ -228,6 +228,8 @@ fn hint_iterator(
228
228
_ => None ,
229
229
} ) ?;
230
230
if let Some ( ty) = ty. normalize_trait_assoc_type ( db, iter_trait, & [ ] , assoc_type_item) {
231
+ // TODO kb also check for the iterator impls for this ty
232
+ dbg ! ( ty. display( db) . to_string( ) ) ;
231
233
const LABEL_START : & str = "impl Iterator<Item = " ;
232
234
const LABEL_END : & str = ">" ;
233
235
@@ -1002,18 +1004,6 @@ fn main() {
1002
1004
1003
1005
println!("Unit expr");
1004
1006
}
1005
-
1006
- //- /alloc.rs crate:alloc deps:core
1007
- mod collections {
1008
- struct Vec<T> {}
1009
- impl<T> Vec<T> {
1010
- fn new() -> Self { Vec {} }
1011
- fn push(&mut self, t: T) { }
1012
- }
1013
- impl<T> IntoIterator for Vec<T> {
1014
- type Item=T;
1015
- }
1016
- }
1017
1007
"# ,
1018
1008
) ;
1019
1009
}
@@ -1043,17 +1033,6 @@ fn main() {
1043
1033
//^ &str
1044
1034
}
1045
1035
}
1046
- //- /alloc.rs crate:alloc deps:core
1047
- mod collections {
1048
- struct Vec<T> {}
1049
- impl<T> Vec<T> {
1050
- fn new() -> Self { Vec {} }
1051
- fn push(&mut self, t: T) { }
1052
- }
1053
- impl<T> IntoIterator for Vec<T> {
1054
- type Item=T;
1055
- }
1056
- }
1057
1036
"# ,
1058
1037
) ;
1059
1038
}
@@ -1183,4 +1162,41 @@ fn main() {
1183
1162
"# ] ] ,
1184
1163
) ;
1185
1164
}
1165
+
1166
+ #[ test]
1167
+ fn shorten_iterators_in_associated_params ( ) {
1168
+ check_with_config (
1169
+ InlayHintsConfig {
1170
+ parameter_hints : false ,
1171
+ type_hints : true ,
1172
+ chaining_hints : true ,
1173
+ max_length : None ,
1174
+ } ,
1175
+ r#"
1176
+ use core::iter;
1177
+
1178
+ pub struct SomeIter<T> {}
1179
+
1180
+ impl<T> SomeIter<T> {
1181
+ pub fn new() -> Self { SomeIter {} }
1182
+ pub fn push(&mut self, t: T) {}
1183
+ }
1184
+
1185
+ impl<T> Iterator for SomeIter<T> {
1186
+ type Item = T;
1187
+ fn next(&mut self) -> Option<Self::Item> {
1188
+ None
1189
+ }
1190
+ }
1191
+
1192
+ fn main() {
1193
+ let mut some_iter = SomeIter::new();
1194
+ //^^^^^^^^^^^^^ SomeIter<Take<Repeat<i32>>>
1195
+ some_iter.push(iter::repeat(2).take(2));
1196
+ let zz = some_iter.take(2);
1197
+ //^^ impl Iterator<Item = Take<Repeat<i32>>>
1198
+ }
1199
+ "# ,
1200
+ ) ;
1201
+ }
1186
1202
}
0 commit comments