fix: make custom expr prefix completions to understand refs

This commit is contained in:
feniljain 2022-10-30 14:55:44 +05:30
parent ebce5e923c
commit 98125b9f95

View File

@ -69,10 +69,6 @@ pub(crate) fn complete_postfix(
}
}
if !ctx.config.snippets.is_empty() {
add_custom_postfix_completions(acc, ctx, &postfix_snippet, &receiver_text);
}
let try_enum = TryEnum::from_ty(&ctx.sema, &receiver_ty.strip_references());
if let Some(try_enum) = &try_enum {
match try_enum {
@ -140,6 +136,10 @@ pub(crate) fn complete_postfix(
None => return,
};
if !ctx.config.snippets.is_empty() {
add_custom_postfix_completions(acc, ctx, &postfix_snippet, &receiver_text);
}
match try_enum {
Some(try_enum) => match try_enum {
TryEnum::Result => {
@ -613,4 +613,25 @@ fn postfix_completion_for_format_like_strings() {
r#"fn main() { log::error!("{}", 2+2) }"#,
);
}
#[test]
fn postfix_custom_snippets_completion_for_references() {
check_edit_with_config(
CompletionConfig {
snippets: vec![Snippet::new(
&[],
&["ok".into()],
&["Ok(${receiver})".into()],
"",
&[],
crate::SnippetScope::Expr,
)
.unwrap()],
..TEST_CONFIG
},
"ok",
r#"fn main() { &&42.$0 }"#,
r#"fn main() { Ok(&&42) }"#,
);
}
}