diff --git a/package.json b/package.json index ef68986e..f0148833 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,8 @@ "test:grammars:tolk": "cd ./server/src/languages/tolk/tree-sitter-tolk/ && tree-sitter test", "test:grammars:fift": "cd ./server/src/languages/fift/tree-sitter-fift/ && tree-sitter test", "test:grammars:tlb": "cd ./server/src/languages/tlb/tree-sitter-tlb/ && tree-sitter test", + "play:grammars:func": "cd ./server/src/languages/func/tree-sitter-func/ && tree-sitter build --wasm && tree-sitter playground", + "parse:grammars:func": "cd ./server/src/languages/func/tree-sitter-func/ && tree-sitter parse -D --open-log main.fc", "test:e2e": "yarn test:e2e:tolk", "test:e2e:compile": "tsc -p ./server/src/e2e/tsconfig.json", "test:e2e:tolk": "yarn test:e2e:compile && ts-node server/src/e2e/runTolkTest.ts", diff --git a/server/src/languages/func/psi/Reference.ts b/server/src/languages/func/psi/Reference.ts index dc938754..d47edfc1 100644 --- a/server/src/languages/func/psi/Reference.ts +++ b/server/src/languages/func/psi/Reference.ts @@ -331,6 +331,13 @@ export class Reference { } } } + + if (firstChild?.type === "typed_tuple") { + // [_, int a, int b] = [1, 2]; + if (!this.processVariableDeclaration(firstChild, proc, file, state)) { + return false + } + } } } return true @@ -358,6 +365,23 @@ export class Reference { } } + if (lhs.type === "typed_tuple" || lhs.type === "tensor_expression") { + const vars = lhs.childrenForFieldName("expressions") + for (const variable of vars) { + if (!variable) continue + if (!this.processVariableDeclaration(variable, proc, file, state)) return false + } + } + + if (lhs.type === "local_vars_declaration") { + const innerLhs = lhs.childForFieldName("lhs") + if (innerLhs) { + if (!this.processVariableDeclaration(innerLhs, proc, file, state)) { + return false + } + } + } + return true } diff --git a/server/src/languages/func/tree-sitter-func/grammar.js b/server/src/languages/func/tree-sitter-func/grammar.js index 36642838..f0840939 100644 --- a/server/src/languages/func/tree-sitter-func/grammar.js +++ b/server/src/languages/func/tree-sitter-func/grammar.js @@ -334,7 +334,7 @@ const FUNC_GRAMMAR = { parenthesized_expression: $ => seq("(", $._expression, ")"), tensor_expression: $ => choice(seq("(", ")"), seq("(", field("expressions", commaSep2($._expression)), ")")), - typed_tuple: $ => seq("[", commaSep($._expression), "]"), + typed_tuple: $ => seq("[", field("expressions", commaSep($._expression)), "]"), // ---------------------------------------------------------- // type system diff --git a/server/src/languages/func/tree-sitter-func/src/grammar.json b/server/src/languages/func/tree-sitter-func/src/grammar.json index 585bca13..e0859fdd 100644 --- a/server/src/languages/func/tree-sitter-func/src/grammar.json +++ b/server/src/languages/func/tree-sitter-func/src/grammar.json @@ -2200,37 +2200,41 @@ "value": "[" }, { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_expression" - }, - { - "type": "REPEAT", - "content": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "," - }, - { - "type": "SYMBOL", - "name": "_expression" - } - ] + "type": "FIELD", + "name": "expressions", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + } } - } - ] - }, - { - "type": "BLANK" - } - ] + ] + }, + { + "type": "BLANK" + } + ] + } }, { "type": "STRING", diff --git a/server/src/languages/func/tree-sitter-func/src/node-types.json b/server/src/languages/func/tree-sitter-func/src/node-types.json index 2c7f92d5..285264c4 100644 --- a/server/src/languages/func/tree-sitter-func/src/node-types.json +++ b/server/src/languages/func/tree-sitter-func/src/node-types.json @@ -2881,56 +2881,237 @@ { "type": "typed_tuple", "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "function_application", - "named": true - }, - { - "type": "identifier", - "named": true - }, - { - "type": "local_vars_declaration", - "named": true - }, - { - "type": "method_call", - "named": true - }, - { - "type": "number_literal", - "named": true - }, - { - "type": "parenthesized_expression", - "named": true - }, - { - "type": "slice_string_literal", - "named": true - }, - { - "type": "string_literal", - "named": true - }, - { - "type": "tensor_expression", - "named": true - }, - { - "type": "typed_tuple", - "named": true - }, - { - "type": "underscore", - "named": true - } - ] + "fields": { + "expressions": { + "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": "+", + "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": "function_application", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "local_vars_declaration", + "named": true + }, + { + "type": "method_call", + "named": true + }, + { + "type": "number_literal", + "named": true + }, + { + "type": "parenthesized_expression", + "named": true + }, + { + "type": "slice_string_literal", + "named": true + }, + { + "type": "string_literal", + "named": true + }, + { + "type": "tensor_expression", + "named": true + }, + { + "type": "typed_tuple", + "named": true + }, + { + "type": "underscore", + "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 + } + ] + } } }, { diff --git a/server/src/languages/func/tree-sitter-func/src/parser.c b/server/src/languages/func/tree-sitter-func/src/parser.c index fab9f973..b3f7549c 100644 --- a/server/src/languages/func/tree-sitter-func/src/parser.c +++ b/server/src/languages/func/tree-sitter-func/src/parser.c @@ -16,7 +16,7 @@ #define FIELD_COUNT 27 #define MAX_ALIAS_SEQUENCE_LENGTH 8 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 48 +#define PRODUCTION_ID_COUNT 49 #define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { @@ -1370,26 +1370,27 @@ static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [25] = {.index = 53, .length = 5}, [26] = {.index = 58, .length = 4}, [27] = {.index = 62, .length = 1}, - [28] = {.index = 63, .length = 6}, - [29] = {.index = 69, .length = 6}, - [30] = {.index = 75, .length = 5}, - [31] = {.index = 80, .length = 2}, - [32] = {.index = 82, .length = 2}, - [33] = {.index = 84, .length = 1}, - [34] = {.index = 85, .length = 3}, - [35] = {.index = 88, .length = 2}, - [36] = {.index = 90, .length = 2}, - [37] = {.index = 92, .length = 2}, - [38] = {.index = 94, .length = 1}, - [39] = {.index = 95, .length = 2}, - [40] = {.index = 97, .length = 2}, - [41] = {.index = 99, .length = 2}, - [42] = {.index = 101, .length = 1}, - [43] = {.index = 102, .length = 2}, - [44] = {.index = 104, .length = 1}, - [45] = {.index = 105, .length = 4}, - [46] = {.index = 109, .length = 7}, - [47] = {.index = 116, .length = 2}, + [28] = {.index = 63, .length = 1}, + [29] = {.index = 64, .length = 6}, + [30] = {.index = 70, .length = 6}, + [31] = {.index = 76, .length = 5}, + [32] = {.index = 81, .length = 2}, + [33] = {.index = 83, .length = 2}, + [34] = {.index = 85, .length = 1}, + [35] = {.index = 86, .length = 3}, + [36] = {.index = 89, .length = 2}, + [37] = {.index = 91, .length = 2}, + [38] = {.index = 93, .length = 2}, + [39] = {.index = 95, .length = 1}, + [40] = {.index = 96, .length = 2}, + [41] = {.index = 98, .length = 2}, + [42] = {.index = 100, .length = 2}, + [43] = {.index = 102, .length = 1}, + [44] = {.index = 103, .length = 2}, + [45] = {.index = 105, .length = 1}, + [46] = {.index = 106, .length = 4}, + [47] = {.index = 110, .length = 7}, + [48] = {.index = 117, .length = 2}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -1482,70 +1483,72 @@ static const TSFieldMapEntry ts_field_map_entries[] = { [62] = {field_vars, 1}, [63] = + {field_expressions, 1}, + [64] = {field_asm_body, 5}, {field_name, 2}, {field_parameters, 3}, {field_return_type, 1}, {field_specifiers, 4}, {field_type_parameters, 0}, - [69] = + [70] = {field_body, 5}, {field_name, 2}, {field_parameters, 3}, {field_return_type, 1}, {field_specifiers, 4}, {field_type_parameters, 0}, - [75] = + [76] = {field_name, 2}, {field_parameters, 3}, {field_return_type, 1}, {field_specifiers, 4}, {field_type_parameters, 0}, - [80] = + [81] = {field_name, 1}, {field_name, 2, .inherited = true}, - [82] = + [83] = {field_name, 0, .inherited = true}, {field_name, 1, .inherited = true}, - [84] = - {field_name, 2, .inherited = true}, [85] = + {field_name, 2, .inherited = true}, + [86] = {field_alternative, 1, .inherited = true}, {field_condition, 1, .inherited = true}, {field_consequent, 1, .inherited = true}, - [88] = + [89] = {field_expressions, 1}, {field_expressions, 2}, - [90] = + [91] = {field_vars, 1}, {field_vars, 2}, - [92] = + [93] = {field_arguments, 2}, {field_method_name, 1}, - [94] = - {field_value, 2}, [95] = + {field_value, 2}, + [96] = {field_body, 2}, {field_count, 1}, - [97] = + [98] = {field_condition, 0}, {field_consequent, 1}, - [99] = + [100] = {field_body, 2}, {field_precondition, 1}, - [101] = - {field_body, 1}, [102] = {field_body, 1}, + [103] = + {field_body, 1}, {field_postcondition, 3}, - [104] = - {field_catch_body, 1}, [105] = + {field_catch_body, 1}, + [106] = {field_alternative, 2}, {field_alternative, 3}, {field_condition, 0}, {field_consequent, 1}, - [109] = + [110] = {field_alternative, 2}, {field_alternative, 3}, {field_alternative, 3, .inherited = true}, @@ -1553,7 +1556,7 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_condition, 3, .inherited = true}, {field_consequent, 1}, {field_consequent, 3, .inherited = true}, - [116] = + [117] = {field_catch_body, 2}, {field_catch_expr, 1}, }; @@ -18488,32 +18491,32 @@ static const TSParseActionEntry ts_parse_actions[] = { [219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesized_expression, 3, 0, 0), [221] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_vars_declaration, 3, 0, 27), [223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_vars_declaration, 3, 0, 27), - [225] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_typed_tuple, 3, 0, 0), - [227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_tuple, 3, 0, 0), + [225] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_typed_tuple, 3, 0, 28), + [227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_tuple, 3, 0, 28), [229] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_vars_declaration, 3, 0, 27), [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_vars_declaration, 3, 0, 27), [233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__expr30_repeat1, 2, 0, 0), [235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expr30_repeat1, 2, 0, 0), [237] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__expr30_repeat1, 2, 0, 0), SHIFT_REPEAT(150), [240] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expr30_repeat1, 2, 0, 0), SHIFT_REPEAT(150), - [243] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_expression, 4, 0, 35), - [245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_expression, 4, 0, 35), + [243] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_expression, 4, 0, 36), + [245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_expression, 4, 0, 36), [247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_vars_declaration, 4, 0, 27), [249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_vars_declaration, 4, 0, 27), - [251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_vars_declaration, 4, 0, 36), - [253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_vars_declaration, 4, 0, 36), - [255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_typed_tuple, 4, 0, 0), - [257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_tuple, 4, 0, 0), + [251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_vars_declaration, 4, 0, 37), + [253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_vars_declaration, 4, 0, 37), + [255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_typed_tuple, 4, 0, 36), + [257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_tuple, 4, 0, 36), [259] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_vars_declaration, 4, 0, 27), [261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_vars_declaration, 4, 0, 27), - [263] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_vars_declaration, 4, 0, 36), - [265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_vars_declaration, 4, 0, 36), - [267] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_method_call, 3, 0, 37), - [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_call, 3, 0, 37), - [271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_vars_declaration, 5, 0, 36), - [273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_vars_declaration, 5, 0, 36), - [275] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_vars_declaration, 5, 0, 36), - [277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_vars_declaration, 5, 0, 36), + [263] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_vars_declaration, 4, 0, 37), + [265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_vars_declaration, 4, 0, 37), + [267] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_method_call, 3, 0, 38), + [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_call, 3, 0, 38), + [271] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tensor_vars_declaration, 5, 0, 37), + [273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tensor_vars_declaration, 5, 0, 37), + [275] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_vars_declaration, 5, 0, 37), + [277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_vars_declaration, 5, 0, 37), [279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), [281] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), [283] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr75, 2, 0, 0), @@ -18641,37 +18644,37 @@ static const TSParseActionEntry ts_parse_actions[] = { [551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_statement, 3, 0, 0), [553] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_statement, 2, 0, 0), [555] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_statement, 2, 0, 0), - [557] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_statement_contents, 2, 0, 40), - [559] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_statement_contents, 2, 0, 40), + [557] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_statement_contents, 2, 0, 41), + [559] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_statement_contents, 2, 0, 41), [561] = {.entry = {.count = 1, .reusable = false}}, SHIFT(356), [563] = {.entry = {.count = 1, .reusable = false}}, SHIFT(100), - [565] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 3, 0, 39), - [567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 3, 0, 39), - [569] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_statement_contents, 4, 0, 45), - [571] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_statement_contents, 4, 0, 45), - [573] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 2, 0, 34), - [575] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 2, 0, 34), + [565] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_statement, 3, 0, 40), + [567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_statement, 3, 0, 40), + [569] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_statement_contents, 4, 0, 46), + [571] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_statement_contents, 4, 0, 46), + [573] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_statement, 2, 0, 35), + [575] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 2, 0, 35), [577] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_statement, 2, 0, 0), [579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 2, 0, 0), - [581] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_catch_clause, 3, 0, 47), - [583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_catch_clause, 3, 0, 47), + [581] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_catch_clause, 3, 0, 48), + [583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_catch_clause, 3, 0, 48), [585] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_empty_statement, 1, 0, 0), [587] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_empty_statement, 1, 0, 0), - [589] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 3, 0, 41), - [591] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 3, 0, 41), + [589] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_statement, 3, 0, 42), + [591] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_statement, 3, 0, 42), [593] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_statement, 3, 0, 0), [595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_statement, 3, 0, 0), - [597] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_catch_statement, 3, 0, 42), - [599] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_catch_statement, 3, 0, 42), - [601] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_while_statement, 4, 0, 43), - [603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_while_statement, 4, 0, 43), - [605] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_catch_clause, 2, 0, 44), - [607] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_catch_clause, 2, 0, 44), + [597] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_try_catch_statement, 3, 0, 43), + [599] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_try_catch_statement, 3, 0, 43), + [601] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_do_while_statement, 4, 0, 44), + [603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_do_while_statement, 4, 0, 44), + [605] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_catch_clause, 2, 0, 45), + [607] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_catch_clause, 2, 0, 45), [609] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_statement, 1, 0, 0), [611] = {.entry = {.count = 1, .reusable = false}}, SHIFT(171), [613] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_statement, 1, 0, 0), - [615] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_statement_contents, 4, 0, 46), - [617] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_statement_contents, 4, 0, 46), + [615] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_statement_contents, 4, 0, 47), + [617] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_statement_contents, 4, 0, 47), [619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), [621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), [623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), @@ -18697,10 +18700,10 @@ static const TSParseActionEntry ts_parse_actions[] = { [663] = {.entry = {.count = 1, .reusable = false}}, SHIFT(290), [665] = {.entry = {.count = 1, .reusable = false}}, SHIFT(272), [667] = {.entry = {.count = 1, .reusable = false}}, SHIFT(275), - [669] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 6, 0, 28), - [671] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 6, 0, 28), - [673] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 6, 0, 30), - [675] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 6, 0, 30), + [669] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 6, 0, 29), + [671] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 6, 0, 29), + [673] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 6, 0, 31), + [675] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 6, 0, 31), [677] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_asm_function_body, 3, 0, 0), [679] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_asm_function_body, 3, 0, 0), [681] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_declarations, 4, 0, 10), @@ -18744,8 +18747,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [757] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import_directive, 4, 0, 4), [759] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_var_declarations, 4, 0, 10), [761] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_global_var_declarations, 4, 0, 10), - [763] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 6, 0, 29), - [765] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 6, 0, 29), + [763] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_declaration, 6, 0, 30), + [765] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_declaration, 6, 0, 30), [767] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_var_declarations, 3, 0, 6), [769] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_global_var_declarations, 3, 0, 6), [771] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_parameters, 4, 0, 0), @@ -18810,15 +18813,15 @@ static const TSParseActionEntry ts_parse_actions[] = { [899] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list_relaxed, 3, 0, 8), [901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), [903] = {.entry = {.count = 1, .reusable = false}}, SHIFT(372), - [905] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 33), - [907] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 33), + [905] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 34), + [907] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 34), [909] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_type_identifier, 1, 0, 1), REDUCE(aux_sym_parameter_list_relaxed_repeat1, 2, 0, 8), [912] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_type, 3, 0, 0), [914] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_type, 3, 0, 0), [916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), [918] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_hole_type, 1, 0, 2), REDUCE(aux_sym_parameter_list_relaxed_repeat1, 2, 0, 8), - [921] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 31), - [923] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 31), + [921] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 32), + [923] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list_relaxed, 4, 0, 32), [925] = {.entry = {.count = 1, .reusable = false}}, SHIFT(391), [927] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tensor_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(128), [930] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tensor_expression_repeat1, 2, 0, 0), @@ -18878,8 +18881,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [1044] = {.entry = {.count = 1, .reusable = false}}, SHIFT(221), [1046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), [1048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_method_id, 4, 0, 38), - [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_id, 4, 0, 38), + [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_method_id, 4, 0, 39), + [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_id, 4, 0, 39), [1054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), [1056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), [1058] = {.entry = {.count = 1, .reusable = false}}, SHIFT(222), @@ -18909,8 +18912,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [1107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), [1109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), [1111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [1113] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_parameter_list_relaxed_repeat1, 2, 0, 32), SHIFT_REPEAT(203), - [1116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parameter_list_relaxed_repeat1, 2, 0, 32), + [1113] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_parameter_list_relaxed_repeat1, 2, 0, 33), SHIFT_REPEAT(203), + [1116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parameter_list_relaxed_repeat1, 2, 0, 33), [1118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), [1120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), [1122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), diff --git a/server/src/languages/func/tree-sitter-func/tree-sitter-func.wasm b/server/src/languages/func/tree-sitter-func/tree-sitter-func.wasm index 7457aad7..bc98c642 100755 Binary files a/server/src/languages/func/tree-sitter-func/tree-sitter-func.wasm and b/server/src/languages/func/tree-sitter-func/tree-sitter-func.wasm differ