teo_parser/completion/
find_completion_in_dictionary_literal.rs

1use crate::availability::Availability;
2use crate::ast::literals::{DictionaryLiteral};
3use crate::ast::schema::Schema;
4use crate::ast::source::Source;
5use crate::completion::completion_item::CompletionItem;
6use crate::completion::find_completion_in_expression::find_completion_in_expression;
7use crate::r#type::Type;
8use crate::traits::node_trait::NodeTrait;
9
10pub(super) fn find_completion_in_dictionary_literal(schema: &Schema, source: &Source, dictionary_literal: &DictionaryLiteral, line_col: (usize, usize), namespace_path: &Vec<&str>, expect: &Type, availability: Availability) -> Vec<CompletionItem> {
11    for named_expression in dictionary_literal.expressions() {
12        let key_expression = named_expression.key();
13        let value_expression = named_expression.value();
14        if key_expression.span().contains_line_col(line_col) && key_expression.kind.as_bracket_expression().is_some() {
15            return find_completion_in_expression(schema, source, key_expression, line_col, namespace_path, &Type::String, availability);
16        }
17        if value_expression.span().contains_line_col(line_col) {
18            return find_completion_in_expression(schema, source, value_expression, line_col, namespace_path, expect.as_dictionary().unwrap_or(&Type::Undetermined), availability);
19        }
20    }
21    vec![]
22}