diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ide/src/inlay_hints.rs | 87 |
1 files changed, 77 insertions, 10 deletions
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 60dc74d41..b1fe33836 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs | |||
@@ -947,13 +947,46 @@ fn main() { | |||
947 | ); | 947 | ); |
948 | check( | 948 | check( |
949 | r#" | 949 | r#" |
950 | //- /main.rs crate:main deps:core | ||
951 | pub struct Vec<T> {} | ||
952 | |||
953 | impl<T> Vec<T> { | ||
954 | pub fn new() -> Self { Vec {} } | ||
955 | pub fn push(&mut self, t: T) {} | ||
956 | } | ||
957 | |||
958 | impl<T> IntoIterator for Vec<T> { | ||
959 | type Item=T; | ||
960 | } | ||
961 | |||
950 | fn main() { | 962 | fn main() { |
951 | let data = &[1i32, 2, 3]; | 963 | let mut data = Vec::new(); |
952 | //^^^^ &[i32; _] | 964 | //^^^^^^^^ Vec<&str> |
953 | for i in | 965 | data.push("foo"); |
966 | for i in | ||
954 | 967 | ||
955 | println!("Unit expr"); | 968 | println!("Unit expr"); |
956 | }"#, | 969 | } |
970 | |||
971 | //- /core.rs crate:core | ||
972 | #[prelude_import] use iter::*; | ||
973 | mod iter { | ||
974 | trait IntoIterator { | ||
975 | type Item; | ||
976 | } | ||
977 | } | ||
978 | //- /alloc.rs crate:alloc deps:core | ||
979 | mod collections { | ||
980 | struct Vec<T> {} | ||
981 | impl<T> Vec<T> { | ||
982 | fn new() -> Self { Vec {} } | ||
983 | fn push(&mut self, t: T) { } | ||
984 | } | ||
985 | impl<T> IntoIterator for Vec<T> { | ||
986 | type Item=T; | ||
987 | } | ||
988 | } | ||
989 | "#, | ||
957 | ); | 990 | ); |
958 | } | 991 | } |
959 | 992 | ||
@@ -961,14 +994,48 @@ fn main() { | |||
961 | fn complete_for_hint() { | 994 | fn complete_for_hint() { |
962 | check( | 995 | check( |
963 | r#" | 996 | r#" |
997 | //- /main.rs crate:main deps:core | ||
998 | pub struct Vec<T> {} | ||
999 | |||
1000 | impl<T> Vec<T> { | ||
1001 | pub fn new() -> Self { Vec {} } | ||
1002 | pub fn push(&mut self, t: T) {} | ||
1003 | } | ||
1004 | |||
1005 | impl<T> IntoIterator for Vec<T> { | ||
1006 | type Item=T; | ||
1007 | } | ||
1008 | |||
964 | fn main() { | 1009 | fn main() { |
965 | let data = &[ 1, 2, 3 ]; | 1010 | let mut data = Vec::new(); |
966 | //^^^^ &[i32; _] | 1011 | //^^^^^^^^ Vec<&str> |
967 | for i in data.into_iter() { | 1012 | data.push("foo"); |
968 | //^ &i32 | 1013 | for i in data { |
969 | println!("{}", i); | 1014 | //^ &str |
1015 | let z = i; | ||
1016 | //^ &str | ||
970 | } | 1017 | } |
971 | }"#, | 1018 | } |
1019 | |||
1020 | //- /core.rs crate:core | ||
1021 | #[prelude_import] use iter::*; | ||
1022 | mod iter { | ||
1023 | trait IntoIterator { | ||
1024 | type Item; | ||
1025 | } | ||
1026 | } | ||
1027 | //- /alloc.rs crate:alloc deps:core | ||
1028 | mod collections { | ||
1029 | struct Vec<T> {} | ||
1030 | impl<T> Vec<T> { | ||
1031 | fn new() -> Self { Vec {} } | ||
1032 | fn push(&mut self, t: T) { } | ||
1033 | } | ||
1034 | impl<T> IntoIterator for Vec<T> { | ||
1035 | type Item=T; | ||
1036 | } | ||
1037 | } | ||
1038 | "#, | ||
972 | ); | 1039 | ); |
973 | } | 1040 | } |
974 | } | 1041 | } |