Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/render/function.rs')
| -rw-r--r-- | crates/ide_completion/src/render/function.rs | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/crates/ide_completion/src/render/function.rs b/crates/ide_completion/src/render/function.rs index 9e5f91db39..bd6833567c 100644 --- a/crates/ide_completion/src/render/function.rs +++ b/crates/ide_completion/src/render/function.rs @@ -565,4 +565,88 @@ fn main() { "#, ); } + + #[test] + fn complete_fn_param() { + // has mut kw + check_edit( + "mut ba", + r#" +fn f(foo: (), mut bar: u32) {} +fn g(foo: (), mut ba$0) +"#, + r#" +fn f(foo: (), mut bar: u32) {} +fn g(foo: (), mut bar: u32) +"#, + ); + + // has type param + check_edit( + "mut ba: u32", + r#" +fn g(foo: (), mut ba$0: u32) +fn f(foo: (), mut bar: u32) {} +"#, + r#" +fn g(foo: (), mut bar: u32) +fn f(foo: (), mut bar: u32) {} +"#, + ); + } + + #[test] + fn complete_fn_mut_param_add_comma() { + // add leading and trailing comma + check_edit( + ", mut ba", + r#" +fn f(foo: (), mut bar: u32) {} +fn g(foo: ()mut ba$0 baz: ()) +"#, + r#" +fn f(foo: (), mut bar: u32) {} +fn g(foo: (), mut bar: u32, baz: ()) +"#, + ); + } + + #[test] + fn complete_fn_mut_param_has_attribute() { + check_edit( + "mut ba", + r#" +fn f(foo: (), #[baz = "qux"] mut bar: u32) {} +fn g(foo: (), mut ba$0) +"#, + r#" +fn f(foo: (), #[baz = "qux"] mut bar: u32) {} +fn g(foo: (), #[baz = "qux"] mut bar: u32) +"#, + ); + + check_edit( + r#"#[baz = "qux"] mut ba"#, + r#" +fn f(foo: (), #[baz = "qux"] mut bar: u32) {} +fn g(foo: (), #[baz = "qux"] mut ba$0) +"#, + r#" +fn f(foo: (), #[baz = "qux"] mut bar: u32) {} +fn g(foo: (), #[baz = "qux"] mut bar: u32) +"#, + ); + + check_edit( + r#", #[baz = "qux"] mut ba"#, + r#" +fn f(foo: (), #[baz = "qux"] mut bar: u32) {} +fn g(foo: ()#[baz = "qux"] mut ba$0) +"#, + r#" +fn f(foo: (), #[baz = "qux"] mut bar: u32) {} +fn g(foo: (), #[baz = "qux"] mut bar: u32) +"#, + ); + } } |