fastn_resolved/
function.rs

1#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
2pub struct Function {
3    pub name: String,
4    pub return_kind: fastn_resolved::KindData,
5    pub arguments: Vec<fastn_resolved::Argument>,
6    pub expression: Vec<fastn_resolved::FunctionExpression>,
7    pub js: Option<fastn_resolved::PropertyValue>,
8    pub line_number: usize,
9    pub external_implementation: bool,
10}
11
12impl Function {
13    pub fn new(
14        name: &str,
15        return_kind: fastn_resolved::KindData,
16        arguments: Vec<fastn_resolved::Argument>,
17        expression: Vec<fastn_resolved::FunctionExpression>,
18        js: Option<fastn_resolved::PropertyValue>,
19        line_number: usize,
20    ) -> Function {
21        Function {
22            name: name.to_string(),
23            return_kind,
24            arguments,
25            expression,
26            js,
27            line_number,
28            external_implementation: false,
29        }
30    }
31}
32
33#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
34pub struct FunctionCall {
35    pub name: String,
36    pub kind: fastn_resolved::KindData,
37    pub is_mutable: bool,
38    pub line_number: usize,
39    pub values: fastn_resolved::Map<fastn_resolved::PropertyValue>,
40    pub order: Vec<String>,
41    // (Default module, Argument name of module kind)
42    pub module_name: Option<(String, String)>,
43}
44
45impl FunctionCall {
46    pub fn new(
47        name: &str,
48        kind: fastn_resolved::KindData,
49        is_mutable: bool,
50        line_number: usize,
51        values: fastn_resolved::Map<fastn_resolved::PropertyValue>,
52        order: Vec<String>,
53        module_name: Option<(String, String)>,
54    ) -> FunctionCall {
55        FunctionCall {
56            name: name.to_string(),
57            kind,
58            is_mutable,
59            line_number,
60            values,
61            order,
62            module_name,
63        }
64    }
65}
66
67#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
68pub struct FunctionExpression {
69    pub expression: String,
70    pub line_number: usize,
71}