Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/field.rs')
| -rw-r--r-- | crates/ide-completion/src/completions/field.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/crates/ide-completion/src/completions/field.rs b/crates/ide-completion/src/completions/field.rs new file mode 100644 index 0000000000..1739527917 --- /dev/null +++ b/crates/ide-completion/src/completions/field.rs @@ -0,0 +1,33 @@ +//! Completion of field list position. + +use crate::{ + context::{IdentContext, NameContext, NameKind, NameRefContext, PathCompletionCtx, PathKind}, + CompletionContext, Completions, +}; + +pub(crate) fn complete_field_list(acc: &mut Completions, ctx: &CompletionContext) { + match &ctx.ident_ctx { + IdentContext::Name(NameContext { kind: NameKind::RecordField, .. }) + | IdentContext::NameRef(NameRefContext { + path_ctx: + Some(PathCompletionCtx { + has_macro_bang: false, + is_absolute_path: false, + qualifier: None, + parent: None, + kind: PathKind::Type { in_tuple_struct: true }, + has_type_args: false, + .. + }), + .. + }) => { + if ctx.qualifier_ctx.vis_node.is_none() { + let mut add_keyword = |kw, snippet| acc.add_keyword_snippet(ctx, kw, snippet); + add_keyword("pub(crate)", "pub(crate)"); + add_keyword("pub(super)", "pub(super)"); + add_keyword("pub", "pub"); + } + } + _ => return, + } +} |