From 7de925b8abcf0d26869dc96f346510af61663edf Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Thu, 27 May 2021 02:54:49 +0200 Subject: Collapse more CompletionContext booleans into enums --- crates/ide_completion/src/completions/flyimport.rs | 3 +- crates/ide_completion/src/completions/keyword.rs | 39 ++++++++++------------ crates/ide_completion/src/completions/snippet.rs | 2 +- .../src/completions/unqualified_path.rs | 3 +- 4 files changed, 21 insertions(+), 26 deletions(-) (limited to 'crates/ide_completion/src/completions') diff --git a/crates/ide_completion/src/completions/flyimport.rs b/crates/ide_completion/src/completions/flyimport.rs index 9d5b61562..b7d3ee8ce 100644 --- a/crates/ide_completion/src/completions/flyimport.rs +++ b/crates/ide_completion/src/completions/flyimport.rs @@ -114,8 +114,7 @@ pub(crate) fn import_on_the_fly(acc: &mut Completions, ctx: &CompletionContext) || ctx.attribute_under_caret.is_some() || ctx.mod_declaration_under_caret.is_some() || ctx.record_lit_syntax.is_some() - || ctx.has_trait_parent - || ctx.has_impl_parent + || ctx.has_impl_or_trait_parent() { return None; } diff --git a/crates/ide_completion/src/completions/keyword.rs b/crates/ide_completion/src/completions/keyword.rs index fa6bcc955..58e35bad9 100644 --- a/crates/ide_completion/src/completions/keyword.rs +++ b/crates/ide_completion/src/completions/keyword.rs @@ -49,34 +49,35 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte return; } - let has_trait_or_impl_parent = ctx.has_impl_parent || ctx.has_trait_parent; - if ctx.trait_as_prev_sibling || ctx.impl_as_prev_sibling { + let has_trait_or_impl_parent = ctx.has_impl_or_trait_parent(); + let has_block_expr_parent = ctx.has_block_expr_parent(); + let has_item_list_parent = ctx.has_item_list_parent(); + if ctx.has_impl_or_trait_prev_sibling() { add_keyword(ctx, acc, "where", "where "); return; } if ctx.previous_token_is(T![unsafe]) { - if ctx.has_item_list_or_source_file_parent || ctx.block_expr_parent { + if has_item_list_parent || has_block_expr_parent { add_keyword(ctx, acc, "fn", "fn $1($2) {\n $0\n}") } - if (ctx.has_item_list_or_source_file_parent) || ctx.block_expr_parent { + if has_item_list_parent || has_block_expr_parent { add_keyword(ctx, acc, "trait", "trait $1 {\n $0\n}"); add_keyword(ctx, acc, "impl", "impl $1 {\n $0\n}"); } return; } - if ctx.has_item_list_or_source_file_parent || has_trait_or_impl_parent || ctx.block_expr_parent - { + if has_item_list_parent || has_trait_or_impl_parent || has_block_expr_parent { add_keyword(ctx, acc, "fn", "fn $1($2) {\n $0\n}"); } - if (ctx.has_item_list_or_source_file_parent) || ctx.block_expr_parent { + if has_item_list_parent || has_block_expr_parent { add_keyword(ctx, acc, "use", "use "); add_keyword(ctx, acc, "impl", "impl $1 {\n $0\n}"); add_keyword(ctx, acc, "trait", "trait $1 {\n $0\n}"); } - if ctx.has_item_list_or_source_file_parent { + if has_item_list_parent { add_keyword(ctx, acc, "enum", "enum $1 {\n $0\n}"); add_keyword(ctx, acc, "struct", "struct $0"); add_keyword(ctx, acc, "union", "union $1 {\n $0\n}"); @@ -92,7 +93,7 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte add_keyword(ctx, acc, "for", "for $1 in $2 {\n $0\n}"); } - if ctx.previous_token_is(T![if]) || ctx.previous_token_is(T![while]) || ctx.block_expr_parent { + if ctx.previous_token_is(T![if]) || ctx.previous_token_is(T![while]) || has_block_expr_parent { add_keyword(ctx, acc, "let", "let "); } @@ -100,27 +101,23 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte add_keyword(ctx, acc, "else", "else {\n $0\n}"); add_keyword(ctx, acc, "else if", "else if $1 {\n $0\n}"); } - if (ctx.has_item_list_or_source_file_parent) || ctx.block_expr_parent { + if has_item_list_parent || has_block_expr_parent { add_keyword(ctx, acc, "mod", "mod $0"); } - if ctx.bind_pat_parent || ctx.ref_pat_parent { + if ctx.has_ident_or_ref_pat_parent() { add_keyword(ctx, acc, "mut", "mut "); } - if ctx.has_item_list_or_source_file_parent || has_trait_or_impl_parent || ctx.block_expr_parent - { + if has_item_list_parent || has_trait_or_impl_parent || has_block_expr_parent { add_keyword(ctx, acc, "const", "const "); add_keyword(ctx, acc, "type", "type "); } - if (ctx.has_item_list_or_source_file_parent) || ctx.block_expr_parent { + if has_item_list_parent || has_block_expr_parent { add_keyword(ctx, acc, "static", "static "); }; - if (ctx.has_item_list_or_source_file_parent) || ctx.block_expr_parent { + if has_item_list_parent || has_block_expr_parent { add_keyword(ctx, acc, "extern", "extern "); } - if ctx.has_item_list_or_source_file_parent - || has_trait_or_impl_parent - || ctx.block_expr_parent - || ctx.is_match_arm + if has_item_list_parent || has_trait_or_impl_parent || has_block_expr_parent || ctx.is_match_arm { add_keyword(ctx, acc, "unsafe", "unsafe "); } @@ -133,7 +130,7 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte add_keyword(ctx, acc, "break", "break"); } } - if ctx.has_item_list_or_source_file_parent || ctx.has_impl_parent | ctx.has_field_list_parent { + if has_item_list_parent || ctx.has_impl_parent() || ctx.has_field_list_parent() { add_keyword(ctx, acc, "pub(crate)", "pub(crate) "); add_keyword(ctx, acc, "pub", "pub "); } @@ -141,7 +138,7 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte if !ctx.is_trivial_path { return; } - let fn_def = match &ctx.function_syntax { + let fn_def = match &ctx.function_def { Some(it) => it, None => return, }; diff --git a/crates/ide_completion/src/completions/snippet.rs b/crates/ide_completion/src/completions/snippet.rs index 14cfb61de..defc25b00 100644 --- a/crates/ide_completion/src/completions/snippet.rs +++ b/crates/ide_completion/src/completions/snippet.rs @@ -14,7 +14,7 @@ fn snippet(ctx: &CompletionContext, cap: SnippetCap, label: &str, snippet: &str) } pub(crate) fn complete_expr_snippet(acc: &mut Completions, ctx: &CompletionContext) { - if !(ctx.is_trivial_path && ctx.function_syntax.is_some()) { + if !(ctx.is_trivial_path && ctx.function_def.is_some()) { return; } let cap = match ctx.config.snippet_cap { diff --git a/crates/ide_completion/src/completions/unqualified_path.rs b/crates/ide_completion/src/completions/unqualified_path.rs index b8f8ef25f..7496d26c4 100644 --- a/crates/ide_completion/src/completions/unqualified_path.rs +++ b/crates/ide_completion/src/completions/unqualified_path.rs @@ -13,8 +13,7 @@ pub(crate) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionC || ctx.record_pat_syntax.is_some() || ctx.attribute_under_caret.is_some() || ctx.mod_declaration_under_caret.is_some() - || ctx.has_impl_parent - || ctx.has_trait_parent + || ctx.has_impl_or_trait_parent() { return; } -- cgit v1.2.3