From d49727472e2d64f3545f2d7981961e381a09d53f Mon Sep 17 00:00:00 2001 From: Jesse Hathaway Date: Thu, 30 Apr 2026 14:34:22 -0500 Subject: [PATCH] Add field names for assignment statements Querying is a bit easier if we have field names to distinguish the sides of an assignment: Code: $foo = $bar Before: (statement (variable (name)) (variable (name))) After: (statement lhs: (variable (name)) rhs: (variable (name))) --- grammar.js | 4 +- src/grammar.json | 16 +- src/node-types.json | 7918 +++++++++++++++++++++-------- src/parser.c | 197 +- src/tree_sitter/array.h | 181 +- test/corpus/element-reference.txt | 4 +- 6 files changed, 5879 insertions(+), 2441 deletions(-) diff --git a/grammar.js b/grammar.js index 103eeeb..3b38d1f 100644 --- a/grammar.js +++ b/grammar.js @@ -128,9 +128,9 @@ module.exports = grammar({ _assignment: $ => prec.right(choice( prec(PREC.LOW, $._relationship), prec.right(PREC.EQUALS, seq( - $._relationship, + field("lhs", $._relationship), field('operator', choice('=', '+=', '-=')), - $._assignment, + field("rhs", $._assignment), )), )), diff --git a/src/grammar.json b/src/grammar.json index 4b5f94f..06faad7 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -217,8 +217,12 @@ "type": "SEQ", "members": [ { - "type": "SYMBOL", - "name": "_relationship" + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_relationship" + } }, { "type": "FIELD", @@ -242,8 +246,12 @@ } }, { - "type": "SYMBOL", - "name": "_assignment" + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_assignment" + } } ] } diff --git a/src/node-types.json b/src/node-types.json index 765778c..bf2d004 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -217,187 +217,8 @@ "named": false } ] - } - }, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "hashpair", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "apply_expression", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "argument_list", - "named": true - }, - { - "type": "block", - "named": true - } - ] - } - }, - { - "type": "argument", - "named": true, - "fields": { - "lhs": { + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -578,24 +399,6 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { @@ -754,7 +557,7 @@ } }, { - "type": "argument_list", + "type": "apply_expression", "named": true, "fields": {}, "children": { @@ -762,29 +565,18 @@ "required": true, "types": [ { - "type": "argument", + "type": "argument_list", "named": true - } - ] - } - }, - { - "type": "array", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ + }, { - "type": "array_element", + "type": "block", "named": true } ] } }, { - "type": "array_element", + "type": "argument", "named": true, "fields": { "lhs": { @@ -986,40 +778,222 @@ "named": false } ] - } - }, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, { "type": "class_definition", "named": true @@ -1144,7 +1118,37 @@ } }, { - "type": "attribute", + "type": "argument_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "argument", + "named": true + } + ] + } + }, + { + "type": "array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "array_element", + "named": true + } + ] + } + }, + { + "type": "array_element", "named": true, "fields": { "lhs": { @@ -1329,30 +1333,12 @@ } ] }, - "name": { - "multiple": false, - "required": true, + "operator": { + "multiple": true, + "required": false, "types": [ { - "type": "*", - "named": false - }, - { - "type": "keyword", - "named": true - }, - { - "type": "name", - "named": true - } - ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", + "type": "+=", "named": false }, { @@ -1365,9 +1351,9 @@ } ] }, - "value": { + "rhs": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "(", @@ -1549,38 +1535,167 @@ } }, "children": { - "multiple": false, - "required": true, + "multiple": true, + "required": false, "types": [ { - "type": "arrow", + "type": "access", "named": true - } - ] - } - }, - { - "type": "attribute_list", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ + }, { - "type": "attribute", + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "hashpair", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", "named": true } ] } }, { - "type": "binary", + "type": "attribute", "named": true, "fields": { "lhs": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "(", @@ -1760,97 +1875,225 @@ } ] }, - "operator": { - "multiple": true, + "name": { + "multiple": false, "required": true, "types": [ { - "type": "!=", + "type": "*", "named": false }, { - "type": "!~", - "named": false + "type": "keyword", + "named": true }, { - "type": "%", - "named": false - }, + "type": "name", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ { - "type": "*", + "type": "+=", "named": false }, { - "type": "+", + "type": "-=", "named": false }, { - "type": "+=", + "type": "=", "named": false - }, + } + ] + }, + "rhs": { + "multiple": true, + "required": false, + "types": [ { - "type": "-", + "type": "(", "named": false }, { - "type": "-=", + "type": ")", "named": false }, { - "type": "/", + "type": "+=", "named": false }, { - "type": "<", + "type": ",", "named": false }, { - "type": "<<", + "type": "-=", "named": false }, { - "type": "<=", + "type": "=", "named": false }, { - "type": "=", + "type": "[", "named": false }, { - "type": "==", + "type": "]", "named": false }, { - "type": "=~", - "named": false + "type": "access", + "named": true }, { - "type": ">", - "named": false + "type": "apply_expression", + "named": true }, { - "type": ">=", - "named": false + "type": "array", + "named": true }, { - "type": ">>", - "named": false + "type": "binary", + "named": true }, { - "type": "and", - "named": false + "type": "call_method_with_lambda", + "named": true }, { - "type": "in", - "named": false + "type": "case", + "named": true }, { - "type": "or", - "named": false + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true } ] }, - "rhs": { + "value": { "multiple": true, "required": true, "types": [ @@ -2032,44 +2275,20 @@ } ] } - } - }, - { - "type": "block", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "statement", - "named": true - } - ] - } - }, - { - "type": "call_method", - "named": true, - "fields": {}, + }, "children": { - "multiple": true, + "multiple": false, "required": true, "types": [ { - "type": "argument_list", - "named": true - }, - { - "type": "named_access", + "type": "arrow", "named": true } ] } }, { - "type": "call_method_with_lambda", + "type": "attribute_list", "named": true, "fields": {}, "children": { @@ -2077,23 +2296,19 @@ "required": true, "types": [ { - "type": "call_method", - "named": true - }, - { - "type": "lambda", + "type": "attribute", "named": true } ] } }, { - "type": "case", + "type": "binary", "named": true, "fields": { "lhs": { "multiple": true, - "required": false, + "required": true, "types": [ { "type": "(", @@ -2275,185 +2490,97 @@ }, "operator": { "multiple": true, - "required": 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 + }, + { + "type": ">=", + "named": false + }, + { + "type": ">>", + "named": false + }, + { + "type": "and", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "or", + "named": false } ] - } - }, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "case_option", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "case_option", - "named": true, - "fields": { - "lhs": { + }, + "rhs": { "multiple": true, - "required": false, + "required": true, "types": [ { "type": "(", @@ -2632,234 +2759,64 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } - }, + } + }, + { + "type": "block", + "named": true, + "fields": {}, "children": { "multiple": true, - "required": true, + "required": false, "types": [ { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "block", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "default", + "type": "statement", "named": true - }, + } + ] + } + }, + { + "type": "call_method", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ { - "type": "define_definition", + "type": "argument_list", "named": true }, { - "type": "double_quoted_string", + "type": "named_access", "named": true - }, + } + ] + } + }, + { + "type": "call_method_with_lambda", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ { - "type": "false", + "type": "call_method", "named": true }, { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "chaining_arrow", - "named": true, - "fields": {} - }, - { - "type": "class_definition", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "classname", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "parameter_list", - "named": true - } - ] - } - }, - { - "type": "classname", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "name", - "named": true - }, - { - "type": "type", + "type": "lambda", "named": true } ] } }, { - "type": "collect_query", + "type": "case", "named": true, "fields": { "lhs": { @@ -3061,175 +3018,8 @@ "named": false } ] - } - }, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "collection_entry_keyword", - "named": true, - "fields": {} - }, - { - "type": "comment", - "named": true, - "extra": true, - "fields": {} - }, - { - "type": "condition", - "named": true, - "fields": { - "lhs": { + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -3410,29 +3200,11 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { "multiple": true, - "required": false, + "required": true, "types": [ { "type": "access", @@ -3458,6 +3230,10 @@ "type": "case", "named": true }, + { + "type": "case_option", + "named": true + }, { "type": "chaining_arrow", "named": true @@ -3582,369 +3358,10 @@ } }, { - "type": "default", - "named": true, - "fields": {} - }, - { - "type": "define_definition", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "classname", - "named": true - }, - { - "type": "parameter_list", - "named": true - } - ] - } - }, - { - "type": "dotted_name", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "dotted_name", - "named": true - }, - { - "type": "name_or_number", - "named": true - } - ] - } - }, - { - "type": "double_quoted_string", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "escape_sequence", - "named": true - }, - { - "type": "interpolation", - "named": true - } - ] - } - }, - { - "type": "else", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "block", - "named": true - } - ] - } - }, - { - "type": "elsif", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "condition", - "named": true - } - ] - } - }, - { - "type": "function_call", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "argument_list", - "named": true - }, - { - "type": "lambda", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "type", - "named": true - } - ] - } - }, - { - "type": "function_definition", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "classname", - "named": true - }, - { - "type": "parameter_list", - "named": true - }, - { - "type": "return_type", - "named": true - } - ] - } - }, - { - "type": "hash", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "hashpair", - "named": true - } - ] - } - }, - { - "type": "hashpair", + "type": "case_option", "named": true, "fields": { - "key": { - "multiple": true, - "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": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "collection_entry_keyword", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - }, - "lhs": { + "lhs": { "multiple": true, "required": false, "types": [ @@ -4144,9 +3561,9 @@ } ] }, - "value": { + "rhs": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "(", @@ -4180,10 +3597,6 @@ "type": "]", "named": false }, - { - "type": "_", - "named": false - }, { "type": "access", "named": true @@ -4216,10 +3629,6 @@ "type": "class_definition", "named": true }, - { - "type": "collection_entry_keyword", - "named": true - }, { "type": "default", "named": true @@ -4335,92 +3744,168 @@ ] } }, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "arrow", - "named": true - } - ] - } - }, - { - "type": "heredoc_body", - "named": true, - "extra": true, - "fields": {}, "children": { "multiple": true, "required": true, "types": [ { - "type": "escape_sequence", + "type": "access", "named": true }, { - "type": "heredoc_body_end", + "type": "apply_expression", "named": true }, { - "type": "heredoc_content", + "type": "array", "named": true }, { - "type": "interpolation", + "type": "binary", "named": true - } - ] - } - }, - { - "type": "heredoc_content", - "named": true, - "fields": {} - }, - { - "type": "heredoc_start", - "named": true, - "fields": {} - }, - { - "type": "hostname", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ + }, { - "type": "default", + "type": "block", "named": true }, { - "type": "dotted_name", + "type": "call_method_with_lambda", "named": true }, { - "type": "double_quoted_string", + "type": "case", "named": true }, { - "type": "heredoc_start", + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", "named": true }, { "type": "regex", "named": true }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, { "type": "single_quoted_string", "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true } ] } }, { - "type": "if", + "type": "chaining_arrow", + "named": true, + "fields": {} + }, + { + "type": "class_definition", "named": true, "fields": {}, "children": { @@ -4432,22 +3917,41 @@ "named": true }, { - "type": "condition", + "type": "classname", "named": true }, { - "type": "else", + "type": "default", "named": true }, { - "type": "elsif", + "type": "parameter_list", "named": true } ] } }, { - "type": "interpolation", + "type": "classname", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "type", + "named": true + } + ] + } + }, + { + "type": "collect_query", "named": true, "fields": { "lhs": { @@ -4649,232 +4153,8 @@ "named": false } ] - } - }, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "keyword", - "named": true, - "fields": {} - }, - { - "type": "lambda", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "parameter_list", - "named": true - }, - { - "type": "return_type", - "named": true - } - ] - } - }, - { - "type": "manifest", - "named": true, - "root": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "statement", - "named": true - } - ] - } - }, - { - "type": "name", - "named": true, - "fields": {} - }, - { - "type": "name_or_number", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "name", - "named": true - }, - { - "type": "number", - "named": true - } - ] - } - }, - { - "type": "named_access", - "named": true, - "fields": { - "lhs": { + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -5055,33 +4335,11 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": true, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": ".", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "access", @@ -5231,106 +4489,4158 @@ } }, { - "type": "node_definition", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "hostname", - "named": true - } - ] - } - }, - { - "type": "parameter", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "regular_parameter", - "named": true - }, - { - "type": "splat_parameter", - "named": true - }, - { - "type": "typed_parameter", - "named": true - } - ] - } - }, - { - "type": "parameter_list", + "type": "collection_entry_keyword", "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "parameter", - "named": true - } - ] - } + "fields": {} }, { - "type": "plan_definition", + "type": "comment", "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "block", - "named": true - }, - { - "type": "classname", - "named": true - }, - { - "type": "parameter_list", - "named": true - } - ] - } + "extra": true, + "fields": {} }, { - "type": "regex", + "type": "condition", "named": true, "fields": { - "pattern": { + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "default", + "named": true, + "fields": {} + }, + { + "type": "define_definition", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "classname", + "named": true + }, + { + "type": "parameter_list", + "named": true + } + ] + } + }, + { + "type": "dotted_name", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "dotted_name", + "named": true + }, + { + "type": "name_or_number", + "named": true + } + ] + } + }, + { + "type": "double_quoted_string", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "escape_sequence", + "named": true + }, + { + "type": "interpolation", + "named": true + } + ] + } + }, + { + "type": "else", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "elsif", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "condition", + "named": true + } + ] + } + }, + { + "type": "function_call", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "argument_list", + "named": true + }, + { + "type": "lambda", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "type", + "named": true + } + ] + } + }, + { + "type": "function_definition", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "classname", + "named": true + }, + { + "type": "parameter_list", + "named": true + }, + { + "type": "return_type", + "named": true + } + ] + } + }, + { + "type": "hash", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "hashpair", + "named": true + } + ] + } + }, + { + "type": "hashpair", + "named": true, + "fields": { + "key": { + "multiple": true, + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "collection_entry_keyword", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "value": { + "multiple": true, + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "collection_entry_keyword", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "arrow", + "named": true + } + ] + } + }, + { + "type": "heredoc_body", + "named": true, + "extra": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "escape_sequence", + "named": true + }, + { + "type": "heredoc_body_end", + "named": true + }, + { + "type": "heredoc_content", + "named": true + }, + { + "type": "interpolation", + "named": true + } + ] + } + }, + { + "type": "heredoc_content", + "named": true, + "fields": {} + }, + { + "type": "heredoc_start", + "named": true, + "fields": {} + }, + { + "type": "hostname", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "default", + "named": true + }, + { + "type": "dotted_name", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + } + ] + } + }, + { + "type": "if", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "condition", + "named": true + }, + { + "type": "else", + "named": true + }, + { + "type": "elsif", + "named": true + } + ] + } + }, + { + "type": "interpolation", + "named": true, + "fields": { + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "keyword", + "named": true, + "fields": {} + }, + { + "type": "lambda", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "parameter_list", + "named": true + }, + { + "type": "return_type", + "named": true + } + ] + } + }, + { + "type": "manifest", + "named": true, + "root": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "statement", + "named": true + } + ] + } + }, + { + "type": "name", + "named": true, + "fields": {} + }, + { + "type": "name_or_number", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "number", + "named": true + } + ] + } + }, + { + "type": "named_access", + "named": true, + "fields": { + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": true, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "node_definition", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "hostname", + "named": true + } + ] + } + }, + { + "type": "parameter", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "regular_parameter", + "named": true + }, + { + "type": "splat_parameter", + "named": true + }, + { + "type": "typed_parameter", + "named": true + } + ] + } + }, + { + "type": "parameter_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "parameter", + "named": true + } + ] + } + }, + { + "type": "plan_definition", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "classname", + "named": true + }, + { + "type": "parameter_list", + "named": true + } + ] + } + }, + { + "type": "regex", + "named": true, + "fields": { + "pattern": { + "multiple": true, + "required": false, + "types": [ + { + "type": "#", + "named": false + } + ] + } + } + }, + { + "type": "regular_parameter", + "named": true, + "fields": { + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "reserved_word", + "named": true, + "fields": {} + }, + { + "type": "resource_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "attribute_list", + "named": true + }, + { + "type": "resource_title", + "named": true + } + ] + } + }, + { + "type": "resource_collector", + "named": true, + "fields": { + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "attribute_list", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "collect_query", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + } + }, + { + "type": "resource_reference", + "named": true, + "fields": { + "lhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { "multiple": true, "required": false, "types": [ { - "type": "#", + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", "named": false } ] - } - } - }, - { - "type": "regular_parameter", - "named": true, - "fields": { - "lhs": { + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -5511,29 +8821,11 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "access", @@ -5547,6 +8839,10 @@ "type": "array", "named": true }, + { + "type": "attribute_list", + "named": true + }, { "type": "binary", "named": true @@ -5683,31 +8979,7 @@ } }, { - "type": "reserved_word", - "named": true, - "fields": {} - }, - { - "type": "resource_body", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "attribute_list", - "named": true - }, - { - "type": "resource_title", - "named": true - } - ] - } - }, - { - "type": "resource_collector", + "type": "resource_title", "named": true, "fields": { "lhs": { @@ -5895,186 +9167,22 @@ "operator": { "multiple": true, "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] - } - }, - "children": { - "multiple": true, - "required": true, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "attribute_list", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "collect_query", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "resource_reference", - "named": true, - "fields": { - "lhs": { + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -6255,24 +9363,6 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { @@ -6291,10 +9381,6 @@ "type": "array", "named": true }, - { - "type": "attribute_list", - "named": true - }, { "type": "binary", "named": true @@ -6431,7 +9517,7 @@ } }, { - "type": "resource_title", + "type": "resource_type", "named": true, "fields": { "lhs": { @@ -6575,222 +9661,66 @@ "named": true }, { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] - } - }, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "access", - "named": true - }, - { - "type": "apply_expression", - "named": true - }, - { - "type": "array", - "named": true - }, - { - "type": "binary", - "named": true - }, - { - "type": "call_method_with_lambda", - "named": true - }, - { - "type": "case", - "named": true - }, - { - "type": "chaining_arrow", - "named": true - }, - { - "type": "class_definition", - "named": true - }, - { - "type": "default", - "named": true - }, - { - "type": "define_definition", - "named": true - }, - { - "type": "double_quoted_string", - "named": true - }, - { - "type": "false", - "named": true - }, - { - "type": "function_call", - "named": true - }, - { - "type": "function_definition", - "named": true - }, - { - "type": "hash", - "named": true - }, - { - "type": "heredoc_start", - "named": true - }, - { - "type": "if", - "named": true - }, - { - "type": "name", - "named": true - }, - { - "type": "node_definition", - "named": true - }, - { - "type": "number", - "named": true - }, - { - "type": "plan_definition", - "named": true - }, - { - "type": "regex", - "named": true - }, - { - "type": "reserved_word", - "named": true - }, - { - "type": "resource_collector", - "named": true - }, - { - "type": "resource_reference", - "named": true - }, - { - "type": "resource_type", - "named": true - }, - { - "type": "selector", - "named": true - }, - { - "type": "single_quoted_string", - "named": true - }, - { - "type": "true", - "named": true - }, - { - "type": "type", - "named": true - }, - { - "type": "type_alias", - "named": true - }, - { - "type": "type_definition", - "named": true - }, - { - "type": "unary", - "named": true - }, - { - "type": "undef", - "named": true - }, - { - "type": "unless", - "named": true - }, - { - "type": "variable", - "named": true - } - ] - } - }, - { - "type": "resource_type", - "named": true, - "fields": { - "lhs": { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -6971,24 +9901,6 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { @@ -7202,7 +10114,189 @@ "fields": { "lhs": { "multiple": true, - "required": false, + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "name": { + "multiple": true, + "required": true, "types": [ { "type": "(", @@ -7382,9 +10476,27 @@ } ] }, - "name": { + "operator": { "multiple": true, - "required": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": "=", + "named": false + } + ] + }, + "rhs": { + "multiple": true, + "required": false, "types": [ { "type": "(", @@ -7564,14 +10676,26 @@ } ] }, - "operator": { + "value": { "multiple": true, - "required": false, + "required": true, "types": [ + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, { "type": "+=", "named": false }, + { + "type": ",", + "named": false + }, { "type": "-=", "named": false @@ -7579,12 +10703,200 @@ { "type": "=", "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true } ] - }, - "value": { + } + } + }, + { + "type": "single_quoted_string", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "escape_sequence", + "named": true + } + ] + } + }, + { + "type": "splat_parameter", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "regular_parameter", + "named": true + } + ] + } + }, + { + "type": "statement", + "named": true, + "fields": { + "lhs": { "multiple": true, - "required": true, + "required": false, "types": [ { "type": "(", @@ -7751,56 +11063,38 @@ "named": true }, { - "type": "undef", - "named": true + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] + }, + "operator": { + "multiple": true, + "required": false, + "types": [ + { + "type": "+=", + "named": false }, { - "type": "unless", - "named": true + "type": "-=", + "named": false }, { - "type": "variable", - "named": true + "type": "=", + "named": false } ] - } - } - }, - { - "type": "single_quoted_string", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "escape_sequence", - "named": true - } - ] - } - }, - { - "type": "splat_parameter", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "regular_parameter", - "named": true - } - ] - } - }, - { - "type": "statement", - "named": true, - "fields": { - "lhs": { + }, + "rhs": { "multiple": true, "required": false, "types": [ @@ -7981,24 +11275,6 @@ "named": true } ] - }, - "operator": { - "multiple": true, - "required": false, - "types": [ - { - "type": "+=", - "named": false - }, - { - "type": "-=", - "named": false - }, - { - "type": "=", - "named": false - } - ] } }, "children": { @@ -8664,6 +11940,188 @@ "named": false } ] + }, + "rhs": { + "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": "access", + "named": true + }, + { + "type": "apply_expression", + "named": true + }, + { + "type": "array", + "named": true + }, + { + "type": "binary", + "named": true + }, + { + "type": "call_method_with_lambda", + "named": true + }, + { + "type": "case", + "named": true + }, + { + "type": "chaining_arrow", + "named": true + }, + { + "type": "class_definition", + "named": true + }, + { + "type": "default", + "named": true + }, + { + "type": "define_definition", + "named": true + }, + { + "type": "double_quoted_string", + "named": true + }, + { + "type": "false", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "hash", + "named": true + }, + { + "type": "heredoc_start", + "named": true + }, + { + "type": "if", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "node_definition", + "named": true + }, + { + "type": "number", + "named": true + }, + { + "type": "plan_definition", + "named": true + }, + { + "type": "regex", + "named": true + }, + { + "type": "reserved_word", + "named": true + }, + { + "type": "resource_collector", + "named": true + }, + { + "type": "resource_reference", + "named": true + }, + { + "type": "resource_type", + "named": true + }, + { + "type": "selector", + "named": true + }, + { + "type": "single_quoted_string", + "named": true + }, + { + "type": "true", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "type_alias", + "named": true + }, + { + "type": "type_definition", + "named": true + }, + { + "type": "unary", + "named": true + }, + { + "type": "undef", + "named": true + }, + { + "type": "unless", + "named": true + }, + { + "type": "variable", + "named": true + } + ] } } }, @@ -9008,11 +12466,11 @@ }, { "type": "type", - "named": false + "named": true }, { "type": "type", - "named": true + "named": false }, { "type": "undef", diff --git a/src/parser.c b/src/parser.c index db18186..798194f 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,4 +1,4 @@ -/* Automatically @generated by tree-sitter */ +/* Automatically @generated by tree-sitter v0.25.9 */ #include "tree_sitter/parser.h" @@ -24,7 +24,7 @@ #define FIELD_COUNT 8 #define MAX_ALIAS_SEQUENCE_LENGTH 7 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 30 +#define PRODUCTION_ID_COUNT 29 #define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { @@ -1546,103 +1546,114 @@ static const char * const ts_field_names[] = { }; static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { - [2] = {.index = 0, .length = 2}, - [3] = {.index = 2, .length = 4}, - [5] = {.index = 6, .length = 3}, - [7] = {.index = 0, .length = 2}, - [8] = {.index = 9, .length = 2}, - [9] = {.index = 11, .length = 1}, - [10] = {.index = 9, .length = 2}, - [11] = {.index = 12, .length = 2}, - [12] = {.index = 14, .length = 5}, - [13] = {.index = 19, .length = 4}, - [14] = {.index = 23, .length = 7}, - [15] = {.index = 30, .length = 3}, - [16] = {.index = 33, .length = 1}, - [17] = {.index = 34, .length = 4}, - [18] = {.index = 38, .length = 6}, - [19] = {.index = 0, .length = 2}, - [20] = {.index = 0, .length = 2}, - [22] = {.index = 44, .length = 4}, - [24] = {.index = 0, .length = 2}, - [25] = {.index = 48, .length = 3}, - [27] = {.index = 51, .length = 6}, - [28] = {.index = 33, .length = 1}, + [2] = {.index = 0, .length = 3}, + [3] = {.index = 3, .length = 5}, + [5] = {.index = 8, .length = 4}, + [7] = {.index = 0, .length = 3}, + [8] = {.index = 12, .length = 3}, + [9] = {.index = 15, .length = 1}, + [10] = {.index = 12, .length = 3}, + [11] = {.index = 16, .length = 3}, + [12] = {.index = 19, .length = 9}, + [13] = {.index = 28, .length = 6}, + [14] = {.index = 34, .length = 4}, + [15] = {.index = 38, .length = 1}, + [16] = {.index = 39, .length = 6}, + [17] = {.index = 45, .length = 8}, + [18] = {.index = 0, .length = 3}, + [19] = {.index = 0, .length = 3}, + [21] = {.index = 53, .length = 5}, + [23] = {.index = 0, .length = 3}, + [24] = {.index = 58, .length = 4}, + [26] = {.index = 62, .length = 8}, + [27] = {.index = 38, .length = 1}, }; static const TSFieldMapEntry ts_field_map_entries[] = { [0] = {field_lhs, 0, .inherited = true}, {field_operator, 0, .inherited = true}, - [2] = + {field_rhs, 0, .inherited = true}, + [3] = {field_arg, 1}, {field_lhs, 1, .inherited = true}, {field_operator, 0}, {field_operator, 1, .inherited = true}, - [6] = + {field_rhs, 1, .inherited = true}, + [8] = {field_lhs, 0}, {field_lhs, 0, .inherited = true}, {field_operator, 0, .inherited = true}, - [9] = + {field_rhs, 0, .inherited = true}, + [12] = {field_lhs, 1, .inherited = true}, {field_operator, 1, .inherited = true}, - [11] = + {field_rhs, 1, .inherited = true}, + [15] = {field_pattern, 1}, - [12] = - {field_lhs, 2, .inherited = true}, - {field_operator, 2, .inherited = true}, - [14] = - {field_lhs, 0, .inherited = true}, + [16] = {field_lhs, 2, .inherited = true}, - {field_operator, 0, .inherited = true}, - {field_operator, 1}, {field_operator, 2, .inherited = true}, + {field_rhs, 2, .inherited = true}, [19] = + {field_lhs, 0}, {field_lhs, 0, .inherited = true}, {field_lhs, 2, .inherited = true}, {field_operator, 0, .inherited = true}, + {field_operator, 1}, {field_operator, 2, .inherited = true}, - [23] = - {field_lhs, 0}, + {field_rhs, 0, .inherited = true}, + {field_rhs, 2}, + {field_rhs, 2, .inherited = true}, + [28] = {field_lhs, 0, .inherited = true}, {field_lhs, 2, .inherited = true}, {field_operator, 0, .inherited = true}, - {field_operator, 1}, {field_operator, 2, .inherited = true}, - {field_rhs, 2}, - [30] = + {field_rhs, 0, .inherited = true}, + {field_rhs, 2, .inherited = true}, + [34] = {field_lhs, 0, .inherited = true}, {field_operator, 0, .inherited = true}, {field_operator, 1}, - [33] = + {field_rhs, 0, .inherited = true}, + [38] = {field_operator, 1}, - [34] = + [39] = {field_lhs, 0, .inherited = true}, {field_lhs, 1, .inherited = true}, {field_operator, 0, .inherited = true}, {field_operator, 1, .inherited = true}, - [38] = + {field_rhs, 0, .inherited = true}, + {field_rhs, 1, .inherited = true}, + [45] = {field_key, 0}, {field_lhs, 0, .inherited = true}, {field_lhs, 2, .inherited = true}, {field_operator, 0, .inherited = true}, {field_operator, 2, .inherited = true}, + {field_rhs, 0, .inherited = true}, + {field_rhs, 2, .inherited = true}, {field_value, 2}, - [44] = + [53] = {field_lhs, 2, .inherited = true}, {field_name, 0}, {field_operator, 2, .inherited = true}, + {field_rhs, 2, .inherited = true}, {field_value, 2}, - [48] = + [58] = {field_lhs, 2, .inherited = true}, {field_operator, 1}, {field_operator, 2, .inherited = true}, - [51] = + {field_rhs, 2, .inherited = true}, + [62] = {field_lhs, 0, .inherited = true}, {field_lhs, 2, .inherited = true}, {field_name, 0}, {field_operator, 0, .inherited = true}, {field_operator, 2, .inherited = true}, + {field_rhs, 0, .inherited = true}, + {field_rhs, 2, .inherited = true}, {field_value, 2}, }; @@ -1663,34 +1674,34 @@ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE [10] = { [1] = alias_sym_condition, }, - [18] = { + [17] = { [1] = anon_sym_PLUS_GT, }, - [19] = { + [18] = { [2] = alias_sym_attribute_list, }, - [20] = { + [19] = { [2] = alias_sym_access, }, - [21] = { + [20] = { [2] = alias_sym_access, }, - [22] = { + [21] = { [1] = anon_sym_PLUS_GT, }, - [23] = { + [22] = { [2] = alias_sym_attribute_list, }, - [24] = { + [23] = { [3] = alias_sym_attribute_list, }, - [26] = { + [25] = { [3] = alias_sym_attribute_list, }, - [28] = { + [27] = { [4] = alias_sym_access, }, - [29] = { + [28] = { [3] = alias_sym_access, }, }; @@ -87384,8 +87395,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1588), [442] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unless, 3, 0, 10), [444] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unless, 3, 0, 10), - [446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary, 3, 0, 14), - [448] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary, 3, 0, 14), + [446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary, 3, 0, 12), + [448] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary, 3, 0, 12), [450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_if_repeat1, 1, 0, 0), [452] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_if_repeat1, 1, 0, 0), [454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), @@ -87395,12 +87406,12 @@ static const TSParseActionEntry ts_parse_actions[] = { [462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(603), [464] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1347), [466] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1490), - [468] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_access, 3, 0, 15), - [470] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_access, 3, 0, 15), + [468] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_access, 3, 0, 14), + [470] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_named_access, 3, 0, 14), [472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_method, 3, 0, 0), [474] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_method, 3, 0, 0), - [476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 3, 0, 16), - [478] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 3, 0, 16), + [476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 3, 0, 15), + [478] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 3, 0, 15), [480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), [482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_method, 1, 0, 0), [484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), @@ -87413,15 +87424,15 @@ static const TSParseActionEntry ts_parse_actions[] = { [498] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node_definition, 6, 0, 0), [500] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_selector, 5, 0, 0), [502] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_selector, 5, 0, 0), - [504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_collector, 6, 0, 24), - [506] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_collector, 6, 0, 24), + [504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_collector, 6, 0, 23), + [506] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_collector, 6, 0, 23), [508] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__primary_expression, 1, 0, 0), [510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), [512] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__primary_expression, 1, 0, 0), - [514] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 6, 0, 28), - [516] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 6, 0, 28), - [518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 7, 0, 28), - [520] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 7, 0, 28), + [514] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 6, 0, 27), + [516] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 6, 0, 27), + [518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 7, 0, 27), + [520] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 7, 0, 27), [522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array, 4, 0, 0), [524] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array, 4, 0, 0), [526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__boolean, 1, 0, 0), @@ -87445,8 +87456,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [562] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_hash, 3, 0, 0), [564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unless, 4, 0, 10), [566] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unless, 4, 0, 10), - [568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bracketed_expression, 4, 0, 20), - [570] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bracketed_expression, 4, 0, 20), + [568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bracketed_expression, 4, 0, 19), + [570] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bracketed_expression, 4, 0, 19), [572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 3, 0, 8), [574] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression, 3, 0, 8), [576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_regex, 3, 0, 9), @@ -87487,8 +87498,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [646] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_class_definition, 4, 0, 0), [648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_undef, 1, 0, 0), [650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_undef, 1, 0, 0), - [652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 4, 0, 16), - [654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 4, 0, 16), + [652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_alias, 4, 0, 15), + [654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_alias, 4, 0, 15), [656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_definition, 4, 0, 0), [658] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node_definition, 4, 0, 0), [660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_else, 2, 0, 0), @@ -87521,14 +87532,14 @@ static const TSParseActionEntry ts_parse_actions[] = { [714] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_collect_query, 2, 0, 0), [716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda, 2, 0, 0), [718] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda, 2, 0, 0), - [720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bracketed_expression, 5, 0, 20), - [722] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bracketed_expression, 5, 0, 20), + [720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bracketed_expression, 5, 0, 19), + [722] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bracketed_expression, 5, 0, 19), [724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_collector, 5, 0, 2), [726] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_collector, 5, 0, 2), [728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_hash, 4, 0, 0), [730] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_hash, 4, 0, 0), - [732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_collector, 5, 0, 24), - [734] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_collector, 5, 0, 24), + [732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_collector, 5, 0, 23), + [734] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_collector, 5, 0, 23), [736] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_hash, 2, 0, 0), [738] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_hash, 2, 0, 0), [740] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 4, 0, 0), @@ -87726,12 +87737,12 @@ static const TSParseActionEntry ts_parse_actions[] = { [1126] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_reference, 4, 0, 2), [1128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_type, 4, 0, 2), [1130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_type, 4, 0, 2), - [1132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_reference, 4, 0, 19), - [1134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_reference, 4, 0, 19), + [1132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_reference, 4, 0, 18), + [1134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_reference, 4, 0, 18), [1136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_type, 5, 0, 2), [1138] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_type, 5, 0, 2), - [1140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_reference, 5, 0, 19), - [1142] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_reference, 5, 0, 19), + [1140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_reference, 5, 0, 18), + [1142] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_reference, 5, 0, 18), [1144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_type, 5, 0, 0), [1146] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_resource_type, 4, 0, 0), REDUCE(sym_resource_type, 5, 0, 0), [1149] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_resource_type, 5, 0, 0), @@ -87854,7 +87865,7 @@ static const TSParseActionEntry ts_parse_actions[] = { [1388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expressions_repeat1, 2, 0, 8), [1390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(322), [1392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1610), - [1394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 22), + [1394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, 0, 21), [1396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), [1398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1596), [1400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1079), @@ -87867,7 +87878,7 @@ static const TSParseActionEntry ts_parse_actions[] = { [1414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1585), [1416] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_if_repeat1, 2, 0, 0), SHIFT_REPEAT(566), [1419] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1180), - [1421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_regular_parameter, 3, 0, 25), + [1421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_regular_parameter, 3, 0, 24), [1423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(486), [1425] = {.entry = {.count = 1, .reusable = true}}, SHIFT(487), [1427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(488), @@ -87890,10 +87901,10 @@ static const TSParseActionEntry ts_parse_actions[] = { [1461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), [1463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), [1465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1657), - [1467] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 4, 0, 23), - [1469] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_selector_option, 3, 0, 27), + [1467] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 4, 0, 22), + [1469] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_selector_option, 3, 0, 26), [1471] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attribute_name, 1, 0, 0), - [1473] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 5, 0, 26), + [1473] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 5, 0, 25), [1475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), [1477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), [1479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), @@ -88128,8 +88139,8 @@ static const TSParseActionEntry ts_parse_actions[] = { [1949] = {.entry = {.count = 1, .reusable = false}}, SHIFT(718), [1951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(705), [1953] = {.entry = {.count = 1, .reusable = false}}, SHIFT(714), - [1955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expressions_repeat1, 2, 0, 17), - [1957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expressions_repeat1, 2, 0, 17), SHIFT_REPEAT(445), + [1955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expressions_repeat1, 2, 0, 16), + [1957] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expressions_repeat1, 2, 0, 16), SHIFT_REPEAT(445), [1960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument, 1, 0, 2), [1962] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_single_quoted_string_repeat1, 2, 0, 0), [1964] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_single_quoted_string_repeat1, 2, 0, 0), SHIFT_REPEAT(1376), @@ -88143,13 +88154,13 @@ static const TSParseActionEntry ts_parse_actions[] = { [1981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1159), [1983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), [1985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(808), - [1987] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expressions, 2, 0, 17), - [1989] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_hashpair, 3, 0, 18), + [1987] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expressions, 2, 0, 16), + [1989] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_hashpair, 3, 0, 17), [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [1993] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_type, 4, 0, 21), + [1993] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameter_type, 4, 0, 20), [1995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typed_parameter, 2, 0, 0), [1997] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__hostnames, 1, 0, 0), - [1999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 3, 0, 23), + [1999] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 3, 0, 22), [2001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(860), [2003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1227), [2005] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter_list, 4, 0, 0), @@ -88166,7 +88177,7 @@ static const TSParseActionEntry ts_parse_actions[] = { [2027] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 3, 0, 0), [2029] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__parameters, 1, 0, 0), [2031] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, 0, 0), - [2033] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 4, 0, 26), + [2033] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_resource_body, 4, 0, 25), [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(863), [2037] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument, 1, 0, 0), [2039] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__untyped_parameter, 1, 0, 0), @@ -88375,7 +88386,7 @@ static const TSParseActionEntry ts_parse_actions[] = { [2445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1178), [2447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(614), [2449] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [2451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_type, 5, 0, 29), + [2451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_type, 5, 0, 28), [2453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1586), [2455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1237), [2457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), diff --git a/src/tree_sitter/array.h b/src/tree_sitter/array.h index 56fc8cd..a17a574 100644 --- a/src/tree_sitter/array.h +++ b/src/tree_sitter/array.h @@ -52,96 +52,67 @@ extern "C" { /// Reserve `new_capacity` elements of space in the array. If `new_capacity` is /// less than the array's current capacity, this function has no effect. -#define array_reserve(self, new_capacity) \ - ((self)->contents = _array__reserve( \ - (void *)(self)->contents, &(self)->capacity, \ - array_elem_size(self), new_capacity) \ - ) +#define array_reserve(self, new_capacity) \ + _array__reserve((Array *)(self), array_elem_size(self), new_capacity) /// Free any memory allocated for this array. Note that this does not free any /// memory allocated for the array's contents. -#define array_delete(self) \ - do { \ - if ((self)->contents) ts_free((self)->contents); \ - (self)->contents = NULL; \ - (self)->size = 0; \ - (self)->capacity = 0; \ - } while (0) +#define array_delete(self) _array__delete((Array *)(self)) /// Push a new `element` onto the end of the array. -#define array_push(self, element) \ - do { \ - (self)->contents = _array__grow( \ - (void *)(self)->contents, (self)->size, &(self)->capacity, \ - 1, array_elem_size(self) \ - ); \ - (self)->contents[(self)->size++] = (element); \ - } while(0) +#define array_push(self, element) \ + (_array__grow((Array *)(self), 1, array_elem_size(self)), \ + (self)->contents[(self)->size++] = (element)) /// Increase the array's size by `count` elements. /// New elements are zero-initialized. -#define array_grow_by(self, count) \ - do { \ - if ((count) == 0) break; \ - (self)->contents = _array__grow( \ - (self)->contents, (self)->size, &(self)->capacity, \ - count, array_elem_size(self) \ - ); \ +#define array_grow_by(self, count) \ + do { \ + if ((count) == 0) break; \ + _array__grow((Array *)(self), count, array_elem_size(self)); \ memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \ - (self)->size += (count); \ + (self)->size += (count); \ } while (0) /// Append all elements from one array to the end of another. -#define array_push_all(self, other) \ +#define array_push_all(self, other) \ array_extend((self), (other)->size, (other)->contents) /// Append `count` elements to the end of the array, reading their values from the /// `contents` pointer. -#define array_extend(self, count, other_contents) \ - (self)->contents = _array__splice( \ - (void*)(self)->contents, &(self)->size, &(self)->capacity, \ - array_elem_size(self), (self)->size, 0, count, other_contents \ +#define array_extend(self, count, contents) \ + _array__splice( \ + (Array *)(self), array_elem_size(self), (self)->size, \ + 0, count, contents \ ) /// Remove `old_count` elements from the array starting at the given `index`. At /// the same index, insert `new_count` new elements, reading their values from the /// `new_contents` pointer. -#define array_splice(self, _index, old_count, new_count, new_contents) \ - (self)->contents = _array__splice( \ - (void *)(self)->contents, &(self)->size, &(self)->capacity, \ - array_elem_size(self), _index, old_count, new_count, new_contents \ +#define array_splice(self, _index, old_count, new_count, new_contents) \ + _array__splice( \ + (Array *)(self), array_elem_size(self), _index, \ + old_count, new_count, new_contents \ ) /// Insert one `element` into the array at the given `index`. -#define array_insert(self, _index, element) \ - (self)->contents = _array__splice( \ - (void *)(self)->contents, &(self)->size, &(self)->capacity, \ - array_elem_size(self), _index, 0, 1, &(element) \ - ) +#define array_insert(self, _index, element) \ + _array__splice((Array *)(self), array_elem_size(self), _index, 0, 1, &(element)) /// Remove one element from the array at the given `index`. #define array_erase(self, _index) \ - _array__erase((void *)(self)->contents, &(self)->size, array_elem_size(self), _index) + _array__erase((Array *)(self), array_elem_size(self), _index) /// Pop the last element off the array, returning the element by value. #define array_pop(self) ((self)->contents[--(self)->size]) /// Assign the contents of one array to another, reallocating if necessary. -#define array_assign(self, other) \ - (self)->contents = _array__assign( \ - (void *)(self)->contents, &(self)->size, &(self)->capacity, \ - (const void *)(other)->contents, (other)->size, array_elem_size(self) \ - ) +#define array_assign(self, other) \ + _array__assign((Array *)(self), (const Array *)(other), array_elem_size(self)) /// Swap one array with another -#define array_swap(self, other) \ - do { \ - void *_array_swap_tmp = (void *)(self)->contents; \ - (self)->contents = (other)->contents; \ - (other)->contents = _array_swap_tmp; \ - _array__swap(&(self)->size, &(self)->capacity, \ - &(other)->size, &(other)->capacity); \ - } while (0) +#define array_swap(self, other) \ + _array__swap((Array *)(self), (Array *)(other)) /// Get the size of the array contents #define array_elem_size(self) (sizeof *(self)->contents) @@ -186,90 +157,82 @@ extern "C" { // Private -// Pointers to individual `Array` fields (rather than the entire `Array` itself) -// are passed to the various `_array__*` functions below to address strict aliasing -// violations that arises when the _entire_ `Array` struct is passed as `Array(void)*`. -// -// The `Array` type itself was not altered as a solution in order to avoid breakage -// with existing consumers (in particular, parsers with external scanners). +typedef Array(void) Array; + +/// This is not what you're looking for, see `array_delete`. +static inline void _array__delete(Array *self) { + if (self->contents) { + ts_free(self->contents); + self->contents = NULL; + self->size = 0; + self->capacity = 0; + } +} /// This is not what you're looking for, see `array_erase`. -static inline void _array__erase(void* self_contents, uint32_t *size, - size_t element_size, uint32_t index) { - assert(index < *size); - char *contents = (char *)self_contents; +static inline void _array__erase(Array *self, size_t element_size, + uint32_t index) { + assert(index < self->size); + char *contents = (char *)self->contents; memmove(contents + index * element_size, contents + (index + 1) * element_size, - (*size - index - 1) * element_size); - (*size)--; + (self->size - index - 1) * element_size); + self->size--; } /// This is not what you're looking for, see `array_reserve`. -static inline void *_array__reserve(void *contents, uint32_t *capacity, - size_t element_size, uint32_t new_capacity) { - void *new_contents = contents; - if (new_capacity > *capacity) { - if (contents) { - new_contents = ts_realloc(contents, new_capacity * element_size); +static inline void _array__reserve(Array *self, size_t element_size, uint32_t new_capacity) { + if (new_capacity > self->capacity) { + if (self->contents) { + self->contents = ts_realloc(self->contents, new_capacity * element_size); } else { - new_contents = ts_malloc(new_capacity * element_size); + self->contents = ts_malloc(new_capacity * element_size); } - *capacity = new_capacity; + self->capacity = new_capacity; } - return new_contents; } /// This is not what you're looking for, see `array_assign`. -static inline void *_array__assign(void* self_contents, uint32_t *self_size, uint32_t *self_capacity, - const void *other_contents, uint32_t other_size, size_t element_size) { - void *new_contents = _array__reserve(self_contents, self_capacity, element_size, other_size); - *self_size = other_size; - memcpy(new_contents, other_contents, *self_size * element_size); - return new_contents; +static inline void _array__assign(Array *self, const Array *other, size_t element_size) { + _array__reserve(self, element_size, other->size); + self->size = other->size; + memcpy(self->contents, other->contents, self->size * element_size); } /// This is not what you're looking for, see `array_swap`. -static inline void _array__swap(uint32_t *self_size, uint32_t *self_capacity, - uint32_t *other_size, uint32_t *other_capacity) { - uint32_t tmp_size = *self_size; - uint32_t tmp_capacity = *self_capacity; - *self_size = *other_size; - *self_capacity = *other_capacity; - *other_size = tmp_size; - *other_capacity = tmp_capacity; +static inline void _array__swap(Array *self, Array *other) { + Array swap = *other; + *other = *self; + *self = swap; } /// This is not what you're looking for, see `array_push` or `array_grow_by`. -static inline void *_array__grow(void *contents, uint32_t size, uint32_t *capacity, - uint32_t count, size_t element_size) { - void *new_contents = contents; - uint32_t new_size = size + count; - if (new_size > *capacity) { - uint32_t new_capacity = *capacity * 2; +static inline void _array__grow(Array *self, uint32_t count, size_t element_size) { + uint32_t new_size = self->size + count; + if (new_size > self->capacity) { + uint32_t new_capacity = self->capacity * 2; if (new_capacity < 8) new_capacity = 8; if (new_capacity < new_size) new_capacity = new_size; - new_contents = _array__reserve(contents, capacity, element_size, new_capacity); + _array__reserve(self, element_size, new_capacity); } - return new_contents; } /// This is not what you're looking for, see `array_splice`. -static inline void *_array__splice(void *self_contents, uint32_t *size, uint32_t *capacity, - size_t element_size, +static inline void _array__splice(Array *self, size_t element_size, uint32_t index, uint32_t old_count, uint32_t new_count, const void *elements) { - uint32_t new_size = *size + new_count - old_count; + uint32_t new_size = self->size + new_count - old_count; uint32_t old_end = index + old_count; uint32_t new_end = index + new_count; - assert(old_end <= *size); + assert(old_end <= self->size); - void *new_contents = _array__reserve(self_contents, capacity, element_size, new_size); + _array__reserve(self, element_size, new_size); - char *contents = (char *)new_contents; - if (*size > old_end) { + char *contents = (char *)self->contents; + if (self->size > old_end) { memmove( contents + new_end * element_size, contents + old_end * element_size, - (*size - old_end) * element_size + (self->size - old_end) * element_size ); } if (new_count > 0) { @@ -287,9 +250,7 @@ static inline void *_array__splice(void *self_contents, uint32_t *size, uint32_t ); } } - *size += new_count - old_count; - - return new_contents; + self->size += new_count - old_count; } /// A binary search routine, based on Rust's `std::slice::binary_search_by`. diff --git a/test/corpus/element-reference.txt b/test/corpus/element-reference.txt index 2ffcdaf..c2efb4a 100644 --- a/test/corpus/element-reference.txt +++ b/test/corpus/element-reference.txt @@ -103,9 +103,9 @@ notice( $myhash[key] ) -------------------------------------------------------------------------------- (manifest (statement - (variable + lhs: (variable (name)) - (hash + rhs: (hash (hashpair key: (name) (arrow)