diff options
| author | Hongxu Xu <xuhongxu96@hotmail.com> | 2022-06-16 08:52:57 +0800 |
|---|---|---|
| committer | Hongxu Xu <xuhongxu96@hotmail.com> | 2022-06-16 08:52:57 +0800 |
| commit | 534d71a852264cced80290afb2f994b179ddb40a (patch) | |
| tree | 7a7518e560bd9412728abe877371cf3b5f32592d | |
| parent | 549c810436669378c05fa1847be2471cc476d9e8 (diff) | |
| download | rust-534d71a852264cced80290afb2f994b179ddb40a.tar.gz rust-534d71a852264cced80290afb2f994b179ddb40a.zip | |
disable private editable in TEST_CONFIG by default
adjust test_visibility_filter test case
| -rw-r--r-- | crates/ide-completion/src/completions/dot.rs | 112 | ||||
| -rw-r--r-- | crates/ide-completion/src/tests.rs | 8 | ||||
| -rw-r--r-- | crates/ide-completion/src/tests/special.rs | 28 |
3 files changed, 118 insertions, 30 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index a11652ca302..4eb1fccd7d3 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -117,13 +117,20 @@ fn complete_methods( mod tests { use expect_test::{expect, Expect}; - use crate::tests::{check_edit, completion_list_no_kw}; + use crate::tests::{ + check_edit, completion_list_no_kw, completion_list_no_kw_with_private_editable, + }; fn check(ra_fixture: &str, expect: Expect) { let actual = completion_list_no_kw(ra_fixture); expect.assert_eq(&actual); } + fn check_with_private_editable(ra_fixture: &str, expect: Expect) { + let actual = completion_list_no_kw_with_private_editable(ra_fixture); + expect.assert_eq(&actual); + } + #[test] fn test_struct_field_and_method_completion() { check( @@ -202,6 +209,101 @@ pub mod m { fn foo(a: lib::m::A) { a.$0 } "#, expect![[r#" + fd pub_field u32 + "#]], + ); + + check( + r#" +//- /lib.rs crate:lib new_source_root:library +pub mod m { + pub struct A { + private_field: u32, + pub pub_field: u32, + pub(crate) crate_field: u32, + pub(super) super_field: u32, + } +} +//- /main.rs crate:main deps:lib new_source_root:local +fn foo(a: lib::m::A) { a.$0 } +"#, + expect![[r#" + fd pub_field u32 + "#]], + ); + + check( + r#" +//- /lib.rs crate:lib new_source_root:library +pub mod m { + pub struct A( + i32, + pub f64, + ); +} +//- /main.rs crate:main deps:lib new_source_root:local +fn foo(a: lib::m::A) { a.$0 } +"#, + expect![[r#" + fd 1 f64 + "#]], + ); + + check( + r#" +//- /lib.rs crate:lib new_source_root:local +pub struct A {} +mod m { + impl super::A { + fn private_method(&self) {} + pub(crate) fn crate_method(&self) {} + pub fn pub_method(&self) {} + } +} +//- /main.rs crate:main deps:lib new_source_root:local +fn foo(a: lib::A) { a.$0 } +"#, + expect![[r#" + me pub_method() fn(&self) + "#]], + ); + check( + r#" +//- /lib.rs crate:lib new_source_root:library +pub struct A {} +mod m { + impl super::A { + fn private_method(&self) {} + pub(crate) fn crate_method(&self) {} + pub fn pub_method(&self) {} + } +} +//- /main.rs crate:main deps:lib new_source_root:local +fn foo(a: lib::A) { a.$0 } +"#, + expect![[r#" + me pub_method() fn(&self) + "#]], + ); + } + + #[test] + fn test_visibility_filtering_with_private_editable_enabled() { + check_with_private_editable( + r#" +//- /lib.rs crate:lib new_source_root:local +pub mod m { + pub struct A { + private_field: u32, + pub pub_field: u32, + pub(crate) crate_field: u32, + pub(super) super_field: u32, + } +} +//- /main.rs crate:main deps:lib new_source_root:local +fn foo(a: lib::m::A) { a.$0 } +"#, + expect![[r#" fd crate_field u32 fd private_field u32 fd pub_field u32 @@ -209,7 +311,7 @@ fn foo(a: lib::m::A) { a.$0 } "#]], ); - check( + check_with_private_editable( r#" //- /lib.rs crate:lib new_source_root:library pub mod m { @@ -228,7 +330,7 @@ fn foo(a: lib::m::A) { a.$0 } "#]], ); - check( + check_with_private_editable( r#" //- /lib.rs crate:lib new_source_root:library pub mod m { @@ -245,7 +347,7 @@ fn foo(a: lib::m::A) { a.$0 } "#]], ); - check( + check_with_private_editable( r#" //- /lib.rs crate:lib new_source_root:local pub struct A {} @@ -265,7 +367,7 @@ fn foo(a: lib::A) { a.$0 } me pub_method() fn(&self) "#]], ); - check( + check_with_private_editable( r#" //- /lib.rs crate:lib new_source_root:library pub struct A {} diff --git a/crates/ide-completion/src/tests.rs b/crates/ide-completion/src/tests.rs index d30ff77bab6..4be6acbe846 100644 --- a/crates/ide-completion/src/tests.rs +++ b/crates/ide-completion/src/tests.rs @@ -65,7 +65,7 @@ pub(crate) const TEST_CONFIG: CompletionConfig = CompletionConfig { enable_postfix_completions: true, enable_imports_on_the_fly: true, enable_self_on_the_fly: true, - enable_private_editable: true, + enable_private_editable: false, callable: Some(CallableSnippets::FillArguments), snippet_cap: SnippetCap::new(true), insert_use: InsertUseConfig { @@ -86,6 +86,12 @@ pub(crate) fn completion_list_no_kw(ra_fixture: &str) -> String { completion_list_with_config(TEST_CONFIG, ra_fixture, false, None) } +pub(crate) fn completion_list_no_kw_with_private_editable(ra_fixture: &str) -> String { + let mut config = TEST_CONFIG.clone(); + config.enable_private_editable = true; + completion_list_with_config(config, ra_fixture, false, None) +} + pub(crate) fn completion_list_with_trigger_character( ra_fixture: &str, trigger_character: Option<char>, diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs index 2f2351e27bf..4535923b28b 100644 --- a/crates/ide-completion/src/tests/special.rs +++ b/crates/ide-completion/src/tests/special.rs @@ -2,21 +2,13 @@ use expect_test::{expect, Expect}; -use crate::{ - tests::{check_edit, completion_list_no_kw, completion_list_with_config, TEST_CONFIG}, - CompletionConfig, -}; +use crate::tests::{check_edit, completion_list_no_kw}; fn check(ra_fixture: &str, expect: Expect) { let actual = completion_list_no_kw(ra_fixture); expect.assert_eq(&actual) } -fn check_with_config(config: CompletionConfig, ra_fixture: &str, expect: Expect) { - let actual = completion_list_with_config(config, ra_fixture, false, None); - expect.assert_eq(&actual) -} - #[test] fn completes_if_prefix_is_keyword() { check_edit( @@ -647,11 +639,7 @@ fn bar() -> Bar { #[test] fn completes_fn_in_pub_trait_generated_by_macro() { - let mut config = TEST_CONFIG.clone(); - config.enable_private_editable = false; - - check_with_config( - config, + check( r#" mod other_mod { macro_rules! make_method { @@ -685,11 +673,7 @@ fn main() { #[test] fn completes_fn_in_pub_trait_generated_by_recursive_macro() { - let mut config = TEST_CONFIG.clone(); - config.enable_private_editable = false; - - check_with_config( - config, + check( r#" mod other_mod { macro_rules! make_method { @@ -729,11 +713,7 @@ fn main() { #[test] fn completes_const_in_pub_trait_generated_by_macro() { - let mut config = TEST_CONFIG.clone(); - config.enable_private_editable = false; - - check_with_config( - config, + check( r#" mod other_mod { macro_rules! make_const { |
