diff options
| author | Shoyu Vanilla (Flint) <modulo641@gmail.com> | 2025-09-26 08:10:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-26 08:10:25 +0000 |
| commit | eb0cacbd322380f97e71e94f5a4ca7fb12a9b22d (patch) | |
| tree | 51e56d83b8d564803af3872df66bc96be14bf3e1 | |
| parent | f1e67f5418239cf3cfe19d4752e1953722e7ab21 (diff) | |
| parent | 78e096015deaf67999aafd1df88f3b08fdce4e4a (diff) | |
| download | rust-eb0cacbd322380f97e71e94f5a4ca7fb12a9b22d.tar.gz rust-eb0cacbd322380f97e71e94f5a4ca7fb12a9b22d.zip | |
Merge pull request #20604 from A4-Tacks/cfg-attr-comp
Add cfg_attr predicate completion
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs | 2 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs | 52 |
2 files changed, 53 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs index c542e140df5..e174b0c8922 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/completions/attribute.rs @@ -70,7 +70,7 @@ pub(crate) fn complete_known_attribute_input( lint::complete_lint(acc, ctx, colon_prefix, &existing_lints, &lints); } - ["cfg"] => cfg::complete_cfg(acc, ctx), + ["cfg"] | ["cfg_attr"] => cfg::complete_cfg(acc, ctx), ["macro_use"] => macro_use::complete_macro_use( acc, ctx, diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs index 46a36300459..30e1e108c6c 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/tests/attribute.rs @@ -836,6 +836,58 @@ mod cfg { } #[test] + fn inside_cfg_attr() { + check( + r#" +//- /main.rs cfg:test,dbg=false,opt_level=2 +#[cfg_attr($0)] +"#, + expect![[r#" + ba dbg + ba opt_level + ba test + ba true + "#]], + ); + check( + r#" +//- /main.rs cfg:test,dbg=false,opt_level=2 +#[cfg_attr(b$0)] +"#, + expect![[r#" + ba dbg + ba opt_level + ba test + ba true + "#]], + ); + check( + r#" +//- /main.rs cfg:test,dbg=false,opt_level=2 +#[cfg_attr($0, allow(deprecated))] +"#, + expect![[r#" + ba dbg + ba opt_level + ba test + ba true + "#]], + ); + check( + r#" +//- /main.rs cfg:test,dbg=false,opt_level=2 +#[cfg_attr(b$0, allow(deprecated))] +"#, + expect![[r#" + ba dbg + ba opt_level + ba test + ba true + "#]], + ); + } + + #[test] fn cfg_target_endian() { check( r#"#[cfg(target_endian = $0"#, |
