]> git.lizzy.rs Git - rust.git/blob - crates/ide_completion/src/tests/fn_param.rs
Merge #11204
[rust.git] / crates / ide_completion / src / tests / fn_param.rs
1 use expect_test::{expect, Expect};
2
3 use crate::tests::completion_list;
4
5 fn check(ra_fixture: &str, expect: Expect) {
6     let actual = completion_list(ra_fixture);
7     expect.assert_eq(&actual);
8 }
9
10 #[test]
11 fn only_param() {
12     check(
13         r#"
14 fn foo(file_id: usize) {}
15 fn bar(file_id: usize) {}
16 fn baz(file$0) {}
17 "#,
18         expect![[r#"
19             bn file_id: usize
20             kw mut
21         "#]],
22     );
23 }
24
25 #[test]
26 fn last_param() {
27     check(
28         r#"
29 fn foo(file_id: usize) {}
30 fn bar(file_id: usize) {}
31 fn baz(foo: (), file$0) {}
32 "#,
33         expect![[r#"
34             bn file_id: usize
35             kw mut
36         "#]],
37     );
38 }
39
40 #[test]
41 fn first_param() {
42     check(
43         r#"
44 fn foo(file_id: usize) {}
45 fn bar(file_id: usize) {}
46 fn baz(file$0 id: u32) {}
47 "#,
48         expect![[r#"
49             bn file_id: usize,
50             kw mut
51         "#]],
52     );
53 }
54
55 #[test]
56 fn repeated_param_name() {
57     check(
58         r#"
59 fn foo(file_id: usize) {}
60 fn bar(file_id: u32, $0) {}
61 "#,
62         expect![[r#"
63             kw mut
64         "#]],
65     );
66 }
67
68 #[test]
69 fn trait_param() {
70     check(
71         r#"
72 pub(crate) trait SourceRoot {
73     pub fn contains(file_id: usize) -> bool;
74     pub fn syntax(file$0)
75 }
76 "#,
77         expect![[r#"
78             bn file_id: usize
79             kw mut
80         "#]],
81     );
82 }
83
84 #[test]
85 fn in_inner_function() {
86     check(
87         r#"
88 fn outer(text: &str) {
89     fn inner($0)
90 }
91 "#,
92         expect![[r#"
93             bn text: &str
94             kw mut
95         "#]],
96     )
97 }
98
99 #[test]
100 fn shows_non_ident_pat_param() {
101     check(
102         r#"
103 struct Bar { bar: u32 }
104 fn foo(Bar { bar }: Bar) {}
105 fn foo2($0) {}
106 "#,
107         expect![[r#"
108             bn Bar { bar }: Bar
109             kw mut
110             bn Bar              Bar { bar$1 }: Bar$0
111             st Bar
112         "#]],
113     )
114 }
115
116 #[test]
117 fn in_impl_only_param() {
118     check(
119         r#"
120 struct A {}
121
122 impl A {
123     fn foo(file_id: usize) {}
124     fn new($0) {}
125 }
126 "#,
127         expect![[r#"
128             bn self
129             bn &self
130             bn mut self
131             bn &mut self
132             bn file_id: usize
133             kw mut
134             sp Self
135             st A
136         "#]],
137     )
138 }
139
140 #[test]
141 fn in_impl_after_self() {
142     check(
143         r#"
144 struct A {}
145
146 impl A {
147     fn foo(file_id: usize) {}
148     fn new(self, $0) {}
149 }
150 "#,
151         expect![[r#"
152             bn file_id: usize
153             kw mut
154             sp Self
155             st A
156         "#]],
157     )
158 }