1 use racer_testutils::*;
2 
3 #[test]
completes_methods_for_for_arg()4 fn completes_methods_for_for_arg() {
5     let src = "
6     fn main() {
7         let v: Vec<String> = vec![];
8         for s in v {
9             s.ca~
10         }
11     }
12     ";
13     let got = get_only_completion(src, None);
14     assert_eq!(got.matchstr, "capacity");
15 }
16 
17 #[test]
completes_methods_for_ref_for_arg()18 fn completes_methods_for_ref_for_arg() {
19     let src = "
20     #[derive(Copy, Clone)]
21     struct Usize(usize);
22     impl Usize { fn method(&self) {} }
23     fn main() {
24         let v: Vec<&Usize> = vec![];
25         for &u in v {
26             u.me~
27         }
28     }
29     ";
30     let got = get_only_completion(src, None);
31     assert_eq!(got.matchstr, "method");
32 }
33 
34 #[test]
completes_methods_for_tupled_for_arg()35 fn completes_methods_for_tupled_for_arg() {
36     let src = "
37     fn main() {
38         let v: Vec<(String, usize)> = vec![];
39         for (s, i) in v {
40             s.ca~
41         }
42     }
43     ";
44     let got = get_only_completion(src, None);
45     assert_eq!(got.matchstr, "capacity");
46 }
47 
48 #[test]
completes_methods_for_tupls_for_arg()49 fn completes_methods_for_tupls_for_arg() {
50     let src = "
51     fn main() {
52         struct St(String);
53         let v: Vec<St> = vec![];
54         for St(s) in v {
55             s.cap~
56         }
57     }
58     ";
59     let got = get_only_completion(src, None);
60     assert_eq!(got.matchstr, "capacity");
61 }
62 
63 #[test]
completes_methods_for_complex_tupled_for_arg()64 fn completes_methods_for_complex_tupled_for_arg() {
65     let src = "
66     fn main() {
67         struct St(String);
68         let v: Vec<(String, St, usize)> = vec![];
69         for (s1, St(s2), i) in v {
70             s2.ca~
71         }
72     }
73     ";
74     let got = get_only_completion(src, None);
75     assert_eq!(got.matchstr, "capacity");
76     let src = "
77     #[derive(Copy, Clone)]
78     struct Usize(usize);
79     impl Usize { fn method(&self) {} }
80     fn main() {
81         let v: Vec<(String, &Usize)> = vec![];
82         for (s, &u) in v {
83             u.me~
84         }
85     }
86     ";
87     let got = get_only_completion(src, None);
88     assert_eq!(got.matchstr, "method");
89 }
90 
91 // blocked by #946
92 #[test]
93 #[ignore]
completes_methods_for_struct_for_arg()94 fn completes_methods_for_struct_for_arg() {
95     let src = "
96     fn main() {
97         struct St {
98             name: String,
99             num: usize,
100             __guard: (),
101         }
102         let v: Vec<St> = vec![];
103         for St { name, num: n, .. } in v {
104             name.cap~
105         }
106     }
107     ";
108     let got = get_only_completion(src, None);
109     assert_eq!(got.matchstr, "capacity");
110 }
111