diff options
| author | dfireBird <me@dfirebird.dev> | 2023-11-15 21:46:30 +0530 |
|---|---|---|
| committer | dfireBird <me@dfirebird.dev> | 2023-11-28 22:21:57 +0530 |
| commit | aa1cf8d357f75c7376f933f7274b77bf754e836e (patch) | |
| tree | 655b6dd53c22450992b00e242e6bcebf762fd650 | |
| parent | eedeb58a4eb04e15e6eb82f9f2485ebf38ecd30c (diff) | |
| download | rust-aa1cf8d357f75c7376f933f7274b77bf754e836e.tar.gz rust-aa1cf8d357f75c7376f933f7274b77bf754e836e.zip | |
add tests for tuple fields and expect fn type cases
| -rw-r--r-- | crates/ide-completion/src/completions/dot.rs | 16 | ||||
| -rw-r--r-- | crates/ide-completion/src/render.rs | 56 |
2 files changed, 72 insertions, 0 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index 430dea22257..2f0b6988f21 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -1219,4 +1219,20 @@ fn foo() { S { field: || {} }.fi$0() } "#]], ); } + + #[test] + fn test_tuple_function_field_completion() { + check( + r#" +struct B(u32, fn()) +fn foo() { + let b = B(0, || {}); + b.$0() +} +"#, + expect![[r#" + fd 1 fn() + "#]], + ); + } } diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 26488f49bea..28f7166a22a 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -1691,6 +1691,62 @@ fn foo(f: Foo) { let _: &u32 = f.b$0 } } #[test] + fn expected_fn_type_ref() { + check_kinds( + r#" +struct S { field: fn() } + +fn foo() { + let foo: fn() = S { fields: || {}}.fi$0; +} +"#, + &[CompletionItemKind::SymbolKind(SymbolKind::Field)], + expect![[r#" + [ + CompletionItem { + label: "field", + source_range: 76..78, + text_edit: TextEdit { + indels: [ + Indel { + insert: "(", + delete: 57..57, + }, + Indel { + insert: ")", + delete: 75..75, + }, + Indel { + insert: "field", + delete: 76..78, + }, + ], + }, + kind: SymbolKind( + Field, + ), + detail: "fn()", + relevance: CompletionRelevance { + exact_name_match: false, + type_match: Some( + Exact, + ), + is_local: false, + is_item_from_trait: false, + is_name_already_imported: false, + requires_import: false, + is_op_method: false, + is_private_editable: false, + postfix_match: None, + is_definite: false, + }, + }, + ] + "#]], + ) + } + + #[test] fn qualified_path_ref() { check_kinds( r#" |
