[
{
"type": "attribute",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute_arguments",
"named": true
},
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "attribute_arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
{
"type": "binary_expression",
"named": true,
"fields": {
"lhs": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "!=",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"rhs": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "block_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression_statement",
"named": true
},
{
"type": "let_statement",
"named": true
},
{
"type": "return_statement",
"named": true
}
]
}
},
{
"type": "boolean_expression",
"named": true,
"fields": {}
},
{
"type": "else_clause",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "block_expression",
"named": true
}
]
}
},
{
"type": "else_if_clause",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
{
"type": "enum",
"named": true,
"fields": {
"member": {
"multiple": true,
"required": true,
"types": [
{
"type": ":",
"named": false
},
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"name": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"type": {
"multiple": true,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "generic_param",
"named": true
}
]
}
},
{
"type": "error_propagation_expression",
"named": true,
"fields": {
"expression": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "expression_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
{
"type": "extern_function",
"named": true,
"fields": {
"implicit": {
"multiple": true,
"required": false,
"types": [
{
"type": "implicit",
"named": true
}
]
},
"parameter": {
"multiple": true,
"required": false,
"types": [
{
"type": "param",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "generic_param",
"named": true
},
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "extern_type",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "generic_param",
"named": true
}
]
}
},
{
"type": "free_function",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "block_expression",
"named": true
}
]
},
"implicit": {
"multiple": true,
"required": false,
"types": [
{
"type": "implicit",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameter": {
"multiple": true,
"required": false,
"types": [
{
"type": "param",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"type_parameters": {
"multiple": true,
"required": false,
"types": [
{
"type": ",",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": "generic_param",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "function_call_expression",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "path_expression",
"named": true
}
]
}
}
},
{
"type": "generic_argument_path_segment",
"named": true,
"fields": {
"generic_argument": {
"multiple": true,
"required": true,
"types": [
{
"type": ",",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "generic_param",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
}
]
}
},
{
"type": "if_expression",
"named": true,
"fields": {
"alternative": {
"multiple": true,
"required": false,
"types": [
{
"type": "else_clause",
"named": true
},
{
"type": "else_if_clause",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "block_expression",
"named": true
}
]
}
}
},
{
"type": "impl",
"named": true,
"fields": {
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "enum",
"named": true
},
{
"type": "extern_function",
"named": true
},
{
"type": "extern_type",
"named": true
},
{
"type": "free_function",
"named": true
},
{
"type": "impl",
"named": true
},
{
"type": "module",
"named": true
},
{
"type": "struct",
"named": true
},
{
"type": "trait",
"named": true
},
{
"type": "use",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"trait": {
"multiple": false,
"required": true,
"types": [
{
"type": "path_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "generic_param",
"named": true
}
]
}
},
{
"type": "implicit",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "let_statement",
"named": true,
"fields": {
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "_",
"named": false
},
{
"type": "path_expression",
"named": true
},
{
"type": "pattern_enum",
"named": true
},
{
"type": "pattern_identifier",
"named": true
},
{
"type": "pattern_literal",
"named": true
},
{
"type": "pattern_struct",
"named": true
},
{
"type": "pattern_tuple",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "literal_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "integer_literal",
"named": true
}
]
}
},
{
"type": "match_arm",
"named": true,
"fields": {
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "_",
"named": false
},
{
"type": "path_expression",
"named": true
},
{
"type": "pattern_enum",
"named": true
},
{
"type": "pattern_identifier",
"named": true
},
{
"type": "pattern_literal",
"named": true
},
{
"type": "pattern_struct",
"named": true
},
{
"type": "pattern_tuple",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "match_expression",
"named": true,
"fields": {
"match_value": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "match_arm",
"named": true
}
]
}
},
{
"type": "modifier",
"named": true,
"fields": {}
},
{
"type": "module",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "param",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "_",
"named": false
},
{
"type": "identifier",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "modifier",
"named": true
}
]
}
},
{
"type": "parenthesized_expression",
"named": true,
"fields": {
"expression": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "path_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "generic_argument_path_segment",
"named": true
},
{
"type": "simple_path_segment",
"named": true
}
]
}
},
{
"type": "pattern_enum",
"named": true,
"fields": {
"member": {
"multiple": true,
"required": false,
"types": [
{
"type": "_",
"named": false
},
{
"type": "path_expression",
"named": true
},
{
"type": "pattern_enum",
"named": true
},
{
"type": "pattern_identifier",
"named": true
},
{
"type": "pattern_literal",
"named": true
},
{
"type": "pattern_struct",
"named": true
},
{
"type": "pattern_tuple",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "path_expression",
"named": true
}
]
}
}
},
{
"type": "pattern_identifier",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "modifier",
"named": true
}
]
}
},
{
"type": "pattern_literal",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "literal_expression",
"named": true
}
]
}
},
{
"type": "pattern_struct",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "path_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "struct_pattern",
"named": true
}
]
}
},
{
"type": "pattern_tuple",
"named": true,
"fields": {
"member": {
"multiple": true,
"required": false,
"types": [
{
"type": "_",
"named": false
},
{
"type": "path_expression",
"named": true
},
{
"type": "pattern_enum",
"named": true
},
{
"type": "pattern_identifier",
"named": true
},
{
"type": "pattern_literal",
"named": true
},
{
"type": "pattern_struct",
"named": true
},
{
"type": "pattern_tuple",
"named": true
}
]
}
}
},
{
"type": "primitive_type",
"named": true,
"fields": {}
},
{
"type": "return_statement",
"named": true,
"fields": {
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "simple_path_segment",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "single_struct_argument",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "source_file",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "enum",
"named": true
},
{
"type": "extern_function",
"named": true
},
{
"type": "extern_type",
"named": true
},
{
"type": "free_function",
"named": true
},
{
"type": "impl",
"named": true
},
{
"type": "module",
"named": true
},
{
"type": "struct",
"named": true
},
{
"type": "trait",
"named": true
},
{
"type": "use",
"named": true
}
]
}
},
{
"type": "struct",
"named": true,
"fields": {
"member": {
"multiple": true,
"required": true,
"types": [
{
"type": ":",
"named": false
},
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"name": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"type": {
"multiple": true,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "generic_param",
"named": true
}
]
}
},
{
"type": "struct_argument_tail",
"named": true,
"fields": {
"expression": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "struct_ctor_call_expression",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": false,
"types": [
{
"type": "single_struct_argument",
"named": true
},
{
"type": "struct_argument_tail",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "path_expression",
"named": true
}
]
}
}
},
{
"type": "struct_pattern",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "trait",
"named": true,
"fields": {
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "->",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": "attribute",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "func",
"named": false
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "generic_param",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "implicit",
"named": true
},
{
"type": "implicits",
"named": false
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "param",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"implicit": {
"multiple": true,
"required": false,
"types": [
{
"type": "implicit",
"named": true
}
]
},
"name": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameter": {
"multiple": true,
"required": false,
"types": [
{
"type": "param",
"named": true
}
]
},
"return_type": {
"multiple": true,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
},
{
"type": "generic_param",
"named": true
}
]
}
},
{
"type": "tuple_expression",
"named": true,
"fields": {
"member": {
"multiple": true,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "unary_expression",
"named": true,
"fields": {
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "-",
"named": false
}
]
},
"rhs": {
"multiple": false,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "block_expression",
"named": true
},
{
"type": "boolean_expression",
"named": true
},
{
"type": "error_propagation_expression",
"named": true
},
{
"type": "function_call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_expression",
"named": true
},
{
"type": "literal_expression",
"named": true
},
{
"type": "match_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "path_expression",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "struct_ctor_call_expression",
"named": true
},
{
"type": "tuple_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
}
}
},
{
"type": "use",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "path_expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "!",
"named": false
},
{
"type": "!=",
"named": false
},
{
"type": "#",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "->",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "..",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": ":",
"named": false
},
{
"type": "::",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "=>",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": "?",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "_",
"named": false
},
{
"type": "bool",
"named": false
},
{
"type": "comment",
"named": true
},
{
"type": "else",
"named": false
},
{
"type": "enum",
"named": false
},
{
"type": "extern",
"named": false
},
{
"type": "false",
"named": false
},
{
"type": "felt",
"named": false
},
{
"type": "func",
"named": false
},
{
"type": "identifier",
"named": true
},
{
"type": "if",
"named": false
},
{
"type": "impl",
"named": false
},
{
"type": "implicits",
"named": false
},
{
"type": "integer_literal",
"named": true
},
{
"type": "let",
"named": false
},
{
"type": "match",
"named": false
},
{
"type": "mod",
"named": false
},
{
"type": "mut",
"named": false
},
{
"type": "of",
"named": false
},
{
"type": "return",
"named": false
},
{
"type": "struct",
"named": false
},
{
"type": "trait",
"named": false
},
{
"type": "true",
"named": false
},
{
"type": "type",
"named": false
},
{
"type": "use",
"named": false
},
{
"type": "with",
"named": false
},
{
"type": "{",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "}",
"named": false
}
]