@@ -117,13 +117,20 @@ fn complete_methods(
117
117
mod tests {
118
118
use expect_test:: { expect, Expect } ;
119
119
120
- use crate :: tests:: { check_edit, completion_list_no_kw} ;
120
+ use crate :: tests:: {
121
+ check_edit, completion_list_no_kw, completion_list_no_kw_with_private_editable,
122
+ } ;
121
123
122
124
fn check ( ra_fixture : & str , expect : Expect ) {
123
125
let actual = completion_list_no_kw ( ra_fixture) ;
124
126
expect. assert_eq ( & actual) ;
125
127
}
126
128
129
+ fn check_with_private_editable ( ra_fixture : & str , expect : Expect ) {
130
+ let actual = completion_list_no_kw_with_private_editable ( ra_fixture) ;
131
+ expect. assert_eq ( & actual) ;
132
+ }
133
+
127
134
#[ test]
128
135
fn test_struct_field_and_method_completion ( ) {
129
136
check (
@@ -200,6 +207,101 @@ pub mod m {
200
207
}
201
208
//- /main.rs crate:main deps:lib new_source_root:local
202
209
fn foo(a: lib::m::A) { a.$0 }
210
+ "# ,
211
+ expect ! [ [ r#"
212
+ fd pub_field u32
213
+ "# ] ] ,
214
+ ) ;
215
+
216
+ check (
217
+ r#"
218
+ //- /lib.rs crate:lib new_source_root:library
219
+ pub mod m {
220
+ pub struct A {
221
+ private_field: u32,
222
+ pub pub_field: u32,
223
+ pub(crate) crate_field: u32,
224
+ pub(super) super_field: u32,
225
+ }
226
+ }
227
+ //- /main.rs crate:main deps:lib new_source_root:local
228
+ fn foo(a: lib::m::A) { a.$0 }
229
+ "# ,
230
+ expect ! [ [ r#"
231
+ fd pub_field u32
232
+ "# ] ] ,
233
+ ) ;
234
+
235
+ check (
236
+ r#"
237
+ //- /lib.rs crate:lib new_source_root:library
238
+ pub mod m {
239
+ pub struct A(
240
+ i32,
241
+ pub f64,
242
+ );
243
+ }
244
+ //- /main.rs crate:main deps:lib new_source_root:local
245
+ fn foo(a: lib::m::A) { a.$0 }
246
+ "# ,
247
+ expect ! [ [ r#"
248
+ fd 1 f64
249
+ "# ] ] ,
250
+ ) ;
251
+
252
+ check (
253
+ r#"
254
+ //- /lib.rs crate:lib new_source_root:local
255
+ pub struct A {}
256
+ mod m {
257
+ impl super::A {
258
+ fn private_method(&self) {}
259
+ pub(crate) fn crate_method(&self) {}
260
+ pub fn pub_method(&self) {}
261
+ }
262
+ }
263
+ //- /main.rs crate:main deps:lib new_source_root:local
264
+ fn foo(a: lib::A) { a.$0 }
265
+ "# ,
266
+ expect ! [ [ r#"
267
+ me pub_method() fn(&self)
268
+ "# ] ] ,
269
+ ) ;
270
+ check (
271
+ r#"
272
+ //- /lib.rs crate:lib new_source_root:library
273
+ pub struct A {}
274
+ mod m {
275
+ impl super::A {
276
+ fn private_method(&self) {}
277
+ pub(crate) fn crate_method(&self) {}
278
+ pub fn pub_method(&self) {}
279
+ }
280
+ }
281
+ //- /main.rs crate:main deps:lib new_source_root:local
282
+ fn foo(a: lib::A) { a.$0 }
283
+ "# ,
284
+ expect ! [ [ r#"
285
+ me pub_method() fn(&self)
286
+ "# ] ] ,
287
+ ) ;
288
+ }
289
+
290
+ #[ test]
291
+ fn test_visibility_filtering_with_private_editable_enabled ( ) {
292
+ check_with_private_editable (
293
+ r#"
294
+ //- /lib.rs crate:lib new_source_root:local
295
+ pub mod m {
296
+ pub struct A {
297
+ private_field: u32,
298
+ pub pub_field: u32,
299
+ pub(crate) crate_field: u32,
300
+ pub(super) super_field: u32,
301
+ }
302
+ }
303
+ //- /main.rs crate:main deps:lib new_source_root:local
304
+ fn foo(a: lib::m::A) { a.$0 }
203
305
"# ,
204
306
expect ! [ [ r#"
205
307
fd crate_field u32
@@ -209,7 +311,7 @@ fn foo(a: lib::m::A) { a.$0 }
209
311
"# ] ] ,
210
312
) ;
211
313
212
- check (
314
+ check_with_private_editable (
213
315
r#"
214
316
//- /lib.rs crate:lib new_source_root:library
215
317
pub mod m {
@@ -228,7 +330,7 @@ fn foo(a: lib::m::A) { a.$0 }
228
330
"# ] ] ,
229
331
) ;
230
332
231
- check (
333
+ check_with_private_editable (
232
334
r#"
233
335
//- /lib.rs crate:lib new_source_root:library
234
336
pub mod m {
@@ -245,7 +347,7 @@ fn foo(a: lib::m::A) { a.$0 }
245
347
"# ] ] ,
246
348
) ;
247
349
248
- check (
350
+ check_with_private_editable (
249
351
r#"
250
352
//- /lib.rs crate:lib new_source_root:local
251
353
pub struct A {}
@@ -265,7 +367,7 @@ fn foo(a: lib::A) { a.$0 }
265
367
me pub_method() fn(&self)
266
368
"# ] ] ,
267
369
) ;
268
- check (
370
+ check_with_private_editable (
269
371
r#"
270
372
//- /lib.rs crate:lib new_source_root:library
271
373
pub struct A {}
0 commit comments