[
{
"type": "array_literal",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
},
{
"type": "array_type",
"named": true,
"fields": {
"inner": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "assignment_expression",
"named": true,
"fields": {
"left": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "*=",
"named": false
},
{
"type": "+=",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "/=",
"named": false
},
{
"type": "=",
"named": false
}
]
},
"right": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "attribute",
"named": true,
"extra": true,
"fields": {
"arguments": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "attribute_argument",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "attribute_argument",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "binary_expression",
"named": true,
"fields": {
"left": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"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
}
]
},
"right": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "boolean_literal",
"named": true,
"fields": {}
},
{
"type": "break_statement",
"named": true,
"fields": {}
},
{
"type": "call_expression",
"named": true,
"fields": {
"arguments": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"callee": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "cast_expression",
"named": true,
"fields": {
"source": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "construct_expression",
"named": true,
"fields": {
"field": {
"multiple": true,
"required": true,
"types": [
{
"type": ",",
"named": false
},
{
"type": "constructor_field",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"name": {
"multiple": true,
"required": true,
"types": [
{
"type": "path",
"named": true
},
{
"type": "type_arguments",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "constructor_field",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "implicit_constructor_field",
"named": true
},
{
"type": "named_constructor_field",
"named": true
}
]
}
},
{
"type": "continue_statement",
"named": true,
"fields": {}
},
{
"type": "enum_definition",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
},
"variants": {
"multiple": false,
"required": true,
"types": [
{
"type": "enum_variant_list",
"named": true
}
]
}
}
},
{
"type": "enum_variant_definition",
"named": true,
"fields": {
"fields": {
"multiple": true,
"required": false,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "type",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
}
}
},
{
"type": "enum_variant_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "enum_variant_definition",
"named": true
}
]
}
},
{
"type": "function_definition",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"modifiers": {
"multiple": false,
"required": false,
"types": [
{
"type": "external",
"named": false
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "if_conditional",
"named": true,
"fields": {
"condition": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"else": {
"multiple": true,
"required": false,
"types": [
{
"type": "else",
"named": false
},
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"else_if": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"then": {
"multiple": true,
"required": true,
"types": [
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
}
}
},
{
"type": "implementation",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": true,
"types": [
{
"type": "method_definition",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "implicit_constructor_field",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "import",
"named": true,
"fields": {
"items": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "identifier",
"named": true
}
]
},
"root": {
"multiple": false,
"required": true,
"types": [
{
"type": "path",
"named": true
}
]
}
}
},
{
"type": "infinite_loop",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "is_expression",
"named": true,
"fields": {
"operand": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "pattern",
"named": true
}
]
}
}
},
{
"type": "iterator_loop",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": true,
"types": [
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"collection": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "member_expression",
"named": true,
"fields": {
"field": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "method_definition",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"modifiers": {
"multiple": false,
"required": false,
"types": [
{
"type": "external",
"named": false
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "named_constructor_field",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "namespace",
"named": true,
"fields": {
"path": {
"multiple": false,
"required": true,
"types": [
{
"type": "path",
"named": true
}
]
}
}
},
{
"type": "parameter",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "self",
"named": true
}
]
}
},
{
"type": "parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "parameter",
"named": true
}
]
}
},
{
"type": "path",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "scoped_type_identifier",
"named": true
},
{
"type": "self",
"named": true
}
]
}
},
{
"type": "pattern",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_literal",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "variant_pattern",
"named": true
},
{
"type": "wildcard_pattern",
"named": true
}
]
}
},
{
"type": "postfix_expression",
"named": true,
"fields": {
"operation": {
"multiple": false,
"required": true,
"types": [
{
"type": "++",
"named": false
},
{
"type": "--",
"named": false
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "predicate_loop",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": true,
"types": [
{
"type": "statement",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"condition": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "range_expression",
"named": true,
"fields": {
"inclusive": {
"multiple": false,
"required": false,
"types": [
{
"type": "=",
"named": false
}
]
},
"lower": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"upper": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "return_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
},
{
"type": "scoped_identifier",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"root": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "scoped_type_identifier",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"root": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "source_file",
"named": true,
"root": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "enum_definition",
"named": true
},
{
"type": "function_definition",
"named": true
},
{
"type": "implementation",
"named": true
},
{
"type": "import",
"named": true
},
{
"type": "namespace",
"named": true
},
{
"type": "pattern",
"named": true
},
{
"type": "statement",
"named": true
},
{
"type": "struct_definition",
"named": true
},
{
"type": "trait_definition",
"named": true
},
{
"type": "trait_implementation",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "break_statement",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "continue_statement",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "infinite_loop",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "iterator_loop",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "predicate_loop",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "return_statement",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_declaration",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
},
{
"type": "struct_definition",
"named": true,
"fields": {
"fields": {
"multiple": true,
"required": true,
"types": [
{
"type": "struct_field",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "struct_field",
"named": true,
"fields": {
"default_value": {
"multiple": true,
"required": false,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "field_identifier",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "switch_expression",
"named": true,
"fields": {
"branch": {
"multiple": true,
"required": false,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "statement",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"operand": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
},
"pattern": {
"multiple": true,
"required": false,
"types": [
{
"type": "pattern",
"named": true
}
]
},
"then": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "=>",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "pattern",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "statement",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
}
}
},
{
"type": "trait_definition",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": true,
"types": [
{
"type": "method_definition",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "trait_implementation",
"named": true,
"fields": {
"block": {
"multiple": true,
"required": true,
"types": [
{
"type": "method_definition",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "}",
"named": false
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
},
"target": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "type",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "path",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "array_type",
"named": true
},
{
"type": "self_type",
"named": true
}
]
}
},
{
"type": "type_arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "type_parameters",
"named": true,
"fields": {
"bounds": {
"multiple": true,
"required": false,
"types": [
{
"type": "+",
"named": false
},
{
"type": ":",
"named": false
},
{
"type": "type",
"named": true
}
]
},
"name": {
"multiple": true,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "unary_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
},
{
"type": "variable_declaration",
"named": true,
"fields": {
"declared_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "array_literal",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "boolean_literal",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "cast_expression",
"named": true
},
{
"type": "construct_expression",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "if_conditional",
"named": true
},
{
"type": "integer_literal",
"named": true
},
{
"type": "is_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "range_expression",
"named": true
},
{
"type": "scoped_identifier",
"named": true
},
{
"type": "self",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "switch_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "variable_reference",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "variant_pattern",
"named": true,
"fields": {
"fields": {
"multiple": true,
"required": false,
"types": [
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "pattern",
"named": true
}
]
},
"path": {
"multiple": false,
"required": true,
"types": [
{
"type": "path",
"named": true
}
]
}
}
},
{
"type": "wildcard_pattern",
"named": true,
"fields": {}
},
{
"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": ">=",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "as",
"named": false
},
{
"type": "break",
"named": false
},
{
"type": "continue",
"named": false
},
{
"type": "doc_comment",
"named": true,
"extra": true
},
{
"type": "else",
"named": false
},
{
"type": "enum",
"named": false
},
{
"type": "external",
"named": false
},
{
"type": "false",
"named": false
},
{
"type": "field_identifier",
"named": true
},
{
"type": "float_literal",
"named": true
},
{
"type": "fn",
"named": false
},
{
"type": "for",
"named": false
},
{
"type": "identifier",
"named": true
},
{
"type": "if",
"named": false
},
{
"type": "impl",
"named": false
},
{
"type": "import",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "integer_literal",
"named": true
},
{
"type": "internal",
"named": false
},
{
"type": "is",
"named": false
},
{
"type": "let",
"named": false
},
{
"type": "loop",
"named": false
},
{
"type": "namespace",
"named": false
},
{
"type": "priv",
"named": false
},
{
"type": "pub",
"named": false
},
{
"type": "return",
"named": false
},
{
"type": "self",
"named": true
},
{
"type": "self_type",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "struct",
"named": false
},
{
"type": "switch",
"named": false
},
{
"type": "trait",
"named": false
},
{
"type": "true",
"named": false
},
{
"type": "type_identifier",
"named": true
},
{
"type": "use",
"named": false
},
{
"type": "while",
"named": false
},
{
"type": "{",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "}",
"named": false
}
]