diff options
| author | A4-Tacks <wdsjxhno1001@163.com> | 2025-09-23 11:26:52 +0800 |
|---|---|---|
| committer | A4-Tacks <wdsjxhno1001@163.com> | 2025-09-23 11:26:52 +0800 |
| commit | c241ff4089bf4619ec327c6da0955ee71a08c0a2 (patch) | |
| tree | 677f1993191e4ab9a3029d0bc9145520c92745a3 /src/tools/rust-analyzer/crates | |
| parent | 06ee0ef31f849faa5a43b307323f6ddd4a70920f (diff) | |
| download | rust-c241ff4089bf4619ec327c6da0955ee71a08c0a2.tar.gz rust-c241ff4089bf4619ec327c6da0955ee71a08c0a2.zip | |
Add const parameter keyword completion
Example
---
```rust
fn foo<c$0>() {}
```
->
```rust
fn foo<const $1: $0>() {}
```
Diffstat (limited to 'src/tools/rust-analyzer/crates')
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/completions.rs | 4 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs | 25 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs index e36e0e57045..eb2bb31f963 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/completions.rs @@ -691,6 +691,9 @@ pub(super) fn complete_name( NameKind::RecordField => { field::complete_field_list_record_variant(acc, ctx); } + NameKind::TypeParam => { + acc.add_keyword_snippet(ctx, "const", "const $1: $0"); + } NameKind::ConstParam | NameKind::Enum | NameKind::MacroDef @@ -700,7 +703,6 @@ pub(super) fn complete_name( | NameKind::Static | NameKind::Struct | NameKind::Trait - | NameKind::TypeParam | NameKind::Union | NameKind::Variant => (), } diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs index 84ddff8f617..c438ca78806 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs @@ -1510,3 +1510,28 @@ fn foo<T>() { "#]], ); } + +#[test] +fn fn_generic_params_const_param_snippet() { + check_edit("const", "fn foo<c$0>() {}", "fn foo<const $1: $0>() {}"); + check_edit("const", "fn foo<T, c$0>() {}", "fn foo<T, const $1: $0>() {}"); + check( + r#" +fn foo<T: $0>() {} +"#, + expect![[r#" + kw crate:: + kw self:: + "#]], + ); + check( + r#" +fn foo<const N: $0>() {} +"#, + expect![[r#" + bt u32 u32 + kw crate:: + kw self:: + "#]], + ); +} |
