2022-06-03 15:41:51 +02:00
|
|
|
//! Completion of field list position.
|
|
|
|
|
|
|
|
use crate::{
|
2022-06-17 10:45:19 +02:00
|
|
|
context::{
|
|
|
|
IdentContext, NameContext, NameKind, NameRefContext, NameRefKind, PathCompletionCtx,
|
2022-06-17 14:18:03 +02:00
|
|
|
PathKind, TypeLocation,
|
2022-06-17 10:45:19 +02:00
|
|
|
},
|
2022-06-03 16:33:37 +02:00
|
|
|
CompletionContext, Completions,
|
2022-06-03 15:41:51 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
pub(crate) fn complete_field_list(acc: &mut Completions, ctx: &CompletionContext) {
|
|
|
|
match &ctx.ident_ctx {
|
|
|
|
IdentContext::Name(NameContext { kind: NameKind::RecordField, .. })
|
|
|
|
| IdentContext::NameRef(NameRefContext {
|
2022-06-17 10:45:19 +02:00
|
|
|
kind:
|
|
|
|
Some(NameRefKind::Path(PathCompletionCtx {
|
2022-06-03 15:41:51 +02:00
|
|
|
has_macro_bang: false,
|
|
|
|
is_absolute_path: false,
|
|
|
|
qualifier: None,
|
|
|
|
parent: None,
|
2022-06-17 14:18:03 +02:00
|
|
|
kind: PathKind::Type { location: TypeLocation::TupleField },
|
2022-06-03 15:41:51 +02:00
|
|
|
has_type_args: false,
|
|
|
|
..
|
2022-06-17 10:45:19 +02:00
|
|
|
})),
|
2022-06-03 15:41:51 +02:00
|
|
|
..
|
|
|
|
}) => {
|
|
|
|
if ctx.qualifier_ctx.vis_node.is_none() {
|
2022-06-03 16:33:37 +02:00
|
|
|
let mut add_keyword = |kw, snippet| acc.add_keyword_snippet(ctx, kw, snippet);
|
2022-06-03 15:41:51 +02:00
|
|
|
add_keyword("pub(crate)", "pub(crate)");
|
|
|
|
add_keyword("pub(super)", "pub(super)");
|
|
|
|
add_keyword("pub", "pub");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_ => return,
|
|
|
|
}
|
|
|
|
}
|