From 8917c7b26e96918b5e146a619531e935abeb0817 Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Tue, 23 Apr 2024 19:55:00 +0200 Subject: [PATCH] Implement parsing of implementations and traits --- grammar.js | 116 +- src/grammar.json | 1084 +++- src/node-types.json | 538 +- src/parser.c | 8791 +++++++++++++++++++++++-------- test/corpus/classes.txt | 126 +- test/corpus/comments.txt | 2 +- test/corpus/implementations.txt | 42 + test/corpus/methods.txt | 4 +- test/corpus/traits.txt | 82 + 9 files changed, 8453 insertions(+), 2332 deletions(-) create mode 100644 test/corpus/implementations.txt create mode 100644 test/corpus/traits.txt diff --git a/grammar.js b/grammar.js index 1d72ac4..6eb9353 100644 --- a/grammar.js +++ b/grammar.js @@ -20,7 +20,7 @@ module.exports = grammar({ name: 'inko', word: $ => $.identifier, extras: $ => [ - $.comment, + $.line_comment, /\s/, ], @@ -31,6 +31,9 @@ module.exports = grammar({ $.external_function, $.module_method, $.class, + $.trait, + $.implement_trait, + $.reopen_class, ), // Imports @@ -53,7 +56,7 @@ module.exports = grammar({ // Methods external_function: $ => seq( 'fn', - field('visibility', optional($.public)), + field('visibility', optional($.visibility)), 'extern', field('name', $.identifier), field('arguments', optional(alias($.extern_arguments, $.arguments))), @@ -68,7 +71,7 @@ module.exports = grammar({ ), module_method: $ => seq( 'fn', - field('visibility', optional($.public)), + field('visibility', optional($.visibility)), field('name', $.identifier), field('type_parameters', optional($.type_parameters)), field('arguments', optional(alias($.method_arguments, $.arguments))), @@ -101,17 +104,113 @@ module.exports = grammar({ alias($.constant, $.type), ), mutable_requirement: _ => 'mut', - public: _ => 'pub', + visibility: _ => 'pub', + _method_modifier: _ => choice( + 'mut', + 'move', + 'async mut', + 'async', + 'static', + ), // Classes - // TODO: modifiers - // TODO: type parameters class: $ => seq( 'class', + field('visibility', optional($.visibility)), + field('modifier', optional(alias($._class_modifier, $.modifier))), field('name', $.constant), + field('type_parameters', optional($.type_parameters)), field('body', $.class_body), ), - class_body: $ => seq('{', '}'), + _class_modifier: $ => choice('async', 'builtin', 'enum'), + class_body: $ => seq('{', repeat($._class_expression) , '}'), + _class_expression: $ => choice( + $.field, + $.case, + alias($.class_method, $.method), + ), + field: $ => seq( + 'let', + field('name', $.field_name), + ':', + field('type', $._type), + ), + case: $ => seq( + 'case', + field('name', $.constant), + field('arguments', optional(alias($.case_arguments, $.arguments))), + ), + case_arguments: $ => seq('(', comma_list($._type), ')'), + class_method: $ => seq( + 'fn', + field('visibility', optional($.visibility)), + field('modifier', optional(alias($._method_modifier, $.modifier))), + field('name', $.identifier), + field('type_parameters', optional($.type_parameters)), + field('arguments', optional(alias($.method_arguments, $.arguments))), + field('returns', optional($._returns)), + field('body', $.block), + ), + + // Traits + trait: $ => seq( + 'trait', + field('visibility', optional($.visibility)), + field('name', $.constant), + field('type_parameters', optional($.type_parameters)), + field('requirements', optional($.required_traits)), + field('body', $.trait_body), + ), + trait_body: $ => seq('{', repeat(alias($.trait_method, $.method)) , '}'), + trait_method: $ => seq( + 'fn', + field('visibility', optional($.visibility)), + field('modifier', optional(alias($._trait_method_modifier, $.modifier))), + field('name', $.identifier), + field('type_parameters', optional($.type_parameters)), + field('arguments', optional(alias($.method_arguments, $.arguments))), + field('returns', optional($._returns)), + field('body', optional($.block)), + ), + _trait_method_modifier: _ => choice('mut', 'move'), + required_traits: $ => seq(':', list($._required_trait, '+', false)), + _required_trait: $ => choice($.generic_type, alias($.constant, $.type)), + + // Implementing traits + implement_trait: $ => seq( + 'impl', + field('trait', choice($.generic_type, alias($.constant, $.type))), + 'for', + field('class', $.constant), + field('bounds', optional($.bounds)), + field('body', $.implement_trait_body), + ), + implement_trait_body: $ => seq( + '{', + repeat(alias($.class_method, $.method)) , + '}' + ), + bounds: $ => seq('if', comma_list($.bound)), + bound: $ => seq( + field('name', $.constant), + field('requirements', alias($.bound_requirements, $.requirements)), + ), + bound_requirements: $ => seq( + ':', + list($._type_parameter_requirement, '+', false), + ), + + // Reopening classes + reopen_class: $ => seq( + 'impl', + field('name', $.constant), + field('body', $.reopen_class_body), + ), + reopen_class_body: $ => seq( + '{', + repeat(alias($.class_method, $.method)) , + '}' + ), // Type signatures _type: $ => choice( @@ -142,8 +241,9 @@ module.exports = grammar({ // Various terminals (e.g. identifiers) self: _ => 'self', - comment: _ => token(seq('#', /.*/)), + line_comment: _ => token(seq('#', /.*/)), identifier: _ => /([a-z]|_)[a-zA-Z0-9_]*/, + field_name: _ => /@[a-zA-Z0-9_]+/, constant: _ => /[A-Z][a-zA-Z0-9_]*/ } }); diff --git a/src/grammar.json b/src/grammar.json index e6ee0ff..326c32d 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -27,6 +27,18 @@ { "type": "SYMBOL", "name": "class" + }, + { + "type": "SYMBOL", + "name": "trait" + }, + { + "type": "SYMBOL", + "name": "implement_trait" + }, + { + "type": "SYMBOL", + "name": "reopen_class" } ] }, @@ -335,7 +347,7 @@ "members": [ { "type": "SYMBOL", - "name": "public" + "name": "visibility" }, { "type": "BLANK" @@ -518,7 +530,7 @@ "members": [ { "type": "SYMBOL", - "name": "public" + "name": "visibility" }, { "type": "BLANK" @@ -867,10 +879,35 @@ "type": "STRING", "value": "mut" }, - "public": { + "visibility": { "type": "STRING", "value": "pub" }, + "_method_modifier": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "mut" + }, + { + "type": "STRING", + "value": "move" + }, + { + "type": "STRING", + "value": "async mut" + }, + { + "type": "STRING", + "value": "async" + }, + { + "type": "STRING", + "value": "static" + } + ] + }, "class": { "type": "SEQ", "members": [ @@ -878,6 +915,43 @@ "type": "STRING", "value": "class" }, + { + "type": "FIELD", + "name": "visibility", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "visibility" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "modifier", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_class_modifier" + }, + "named": true, + "value": "modifier" + }, + { + "type": "BLANK" + } + ] + } + }, { "type": "FIELD", "name": "name", @@ -886,6 +960,22 @@ "name": "constant" } }, + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_parameters" + }, + { + "type": "BLANK" + } + ] + } + }, { "type": "FIELD", "name": "body", @@ -896,6 +986,23 @@ } ] }, + "_class_modifier": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "async" + }, + { + "type": "STRING", + "value": "builtin" + }, + { + "type": "STRING", + "value": "enum" + } + ] + }, "class_body": { "type": "SEQ", "members": [ @@ -903,49 +1010,77 @@ "type": "STRING", "value": "{" }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_class_expression" + } + }, { "type": "STRING", "value": "}" } ] }, - "_type": { + "_class_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", - "name": "generic_type" + "name": "field" + }, + { + "type": "SYMBOL", + "name": "case" }, { "type": "ALIAS", "content": { "type": "SYMBOL", - "name": "constant" + "name": "class_method" }, "named": true, - "value": "type" - }, + "value": "method" + } + ] + }, + "field": { + "type": "SEQ", + "members": [ { - "type": "SYMBOL", - "name": "ref_type" + "type": "STRING", + "value": "let" }, { - "type": "SYMBOL", - "name": "mut_type" + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "field_name" + } }, { - "type": "SYMBOL", - "name": "uni_type" + "type": "STRING", + "value": ":" }, { - "type": "SYMBOL", - "name": "fn_type" + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } } ] }, - "generic_type": { + "case": { "type": "SEQ", "members": [ + { + "type": "STRING", + "value": "case" + }, { "type": "FIELD", "name": "name", @@ -958,18 +1093,31 @@ "type": "FIELD", "name": "arguments", "content": { - "type": "SYMBOL", - "name": "type_arguments" + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "case_arguments" + }, + "named": true, + "value": "arguments" + }, + { + "type": "BLANK" + } + ] } } ] }, - "type_arguments": { + "case_arguments": { "type": "SEQ", "members": [ { "type": "STRING", - "value": "[" + "value": "(" }, { "type": "CHOICE", @@ -1018,67 +1166,77 @@ }, { "type": "STRING", - "value": "]" + "value": ")" } ] }, - "ref_type": { + "class_method": { "type": "SEQ", "members": [ { "type": "STRING", - "value": "ref" + "value": "fn" }, { "type": "FIELD", - "name": "type", + "name": "visibility", "content": { - "type": "SYMBOL", - "name": "_type" + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "visibility" + }, + { + "type": "BLANK" + } + ] } - } - ] - }, - "mut_type": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "mut" }, { "type": "FIELD", - "name": "type", + "name": "modifier", "content": { - "type": "SYMBOL", - "name": "_type" + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_method_modifier" + }, + "named": true, + "value": "modifier" + }, + { + "type": "BLANK" + } + ] } - } - ] - }, - "uni_type": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "uni" }, { "type": "FIELD", - "name": "type", + "name": "name", "content": { "type": "SYMBOL", - "name": "_type" + "name": "identifier" } - } - ] - }, - "fn_type": { - "type": "SEQ", - "members": [ + }, { - "type": "STRING", - "value": "fn" + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_parameters" + }, + { + "type": "BLANK" + } + ] + } }, { "type": "FIELD", @@ -1090,7 +1248,7 @@ "type": "ALIAS", "content": { "type": "SYMBOL", - "name": "fn_type_arguments" + "name": "method_arguments" }, "named": true, "value": "arguments" @@ -1116,27 +1274,803 @@ } ] } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "block" + } } ] }, - "fn_type_arguments": { + "trait": { "type": "SEQ", "members": [ { "type": "STRING", - "value": "(" + "value": "trait" }, { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_type" - }, - { + "type": "FIELD", + "name": "visibility", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "visibility" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "constant" + } + }, + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_parameters" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "requirements", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "required_traits" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "trait_body" + } + } + ] + }, + "trait_body": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "trait_method" + }, + "named": true, + "value": "method" + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "trait_method": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fn" + }, + { + "type": "FIELD", + "name": "visibility", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "visibility" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "modifier", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_trait_method_modifier" + }, + "named": true, + "value": "modifier" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_parameters" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "arguments", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "method_arguments" + }, + "named": true, + "value": "arguments" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "returns", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_returns" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "BLANK" + } + ] + } + } + ] + }, + "_trait_method_modifier": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "mut" + }, + { + "type": "STRING", + "value": "move" + } + ] + }, + "required_traits": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_required_trait" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "SYMBOL", + "name": "_required_trait" + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_required_trait": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "generic_type" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "constant" + }, + "named": true, + "value": "type" + } + ] + }, + "implement_trait": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "impl" + }, + { + "type": "FIELD", + "name": "trait", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "generic_type" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "constant" + }, + "named": true, + "value": "type" + } + ] + } + }, + { + "type": "STRING", + "value": "for" + }, + { + "type": "FIELD", + "name": "class", + "content": { + "type": "SYMBOL", + "name": "constant" + } + }, + { + "type": "FIELD", + "name": "bounds", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "bounds" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "implement_trait_body" + } + } + ] + }, + "implement_trait_body": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "class_method" + }, + "named": true, + "value": "method" + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "bounds": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "bound" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "bound" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "bound": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "constant" + } + }, + { + "type": "FIELD", + "name": "requirements", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "bound_requirements" + }, + "named": true, + "value": "requirements" + } + } + ] + }, + "bound_requirements": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type_parameter_requirement" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "SYMBOL", + "name": "_type_parameter_requirement" + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "reopen_class": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "impl" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "constant" + } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "reopen_class_body" + } + } + ] + }, + "reopen_class_body": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "class_method" + }, + "named": true, + "value": "method" + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_type": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "generic_type" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "constant" + }, + "named": true, + "value": "type" + }, + { + "type": "SYMBOL", + "name": "ref_type" + }, + { + "type": "SYMBOL", + "name": "mut_type" + }, + { + "type": "SYMBOL", + "name": "uni_type" + }, + { + "type": "SYMBOL", + "name": "fn_type" + } + ] + }, + "generic_type": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "constant" + } + }, + { + "type": "FIELD", + "name": "arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + } + ] + }, + "type_arguments": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "ref_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "ref" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + "mut_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "mut" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + "uni_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "uni" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + "fn_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fn" + }, + { + "type": "FIELD", + "name": "arguments", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "fn_type_arguments" + }, + "named": true, + "value": "arguments" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "returns", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_returns" + }, + { + "type": "BLANK" + } + ] + } + } + ] + }, + "fn_type_arguments": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { "type": "REPEAT", "content": { "type": "SEQ", @@ -1194,7 +2128,7 @@ "type": "STRING", "value": "self" }, - "comment": { + "line_comment": { "type": "TOKEN", "content": { "type": "SEQ", @@ -1214,6 +2148,10 @@ "type": "PATTERN", "value": "([a-z]|_)[a-zA-Z0-9_]*" }, + "field_name": { + "type": "PATTERN", + "value": "@[a-zA-Z0-9_]+" + }, "constant": { "type": "PATTERN", "value": "[A-Z][a-zA-Z0-9_]*" @@ -1222,7 +2160,7 @@ "extras": [ { "type": "SYMBOL", - "name": "comment" + "name": "line_comment" }, { "type": "PATTERN", diff --git a/src/node-types.json b/src/node-types.json index addc3d3..f07376b 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -93,6 +93,73 @@ "named": true, "fields": {} }, + { + "type": "bound", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant", + "named": true + } + ] + }, + "requirements": { + "multiple": false, + "required": true, + "types": [ + { + "type": "requirements", + "named": true + } + ] + } + } + }, + { + "type": "bounds", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "bound", + "named": true + } + ] + } + }, + { + "type": "case", + "named": true, + "fields": { + "arguments": { + "multiple": false, + "required": false, + "types": [ + { + "type": "arguments", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant", + "named": true + } + ] + } + } + }, { "type": "class", "named": true, @@ -107,6 +174,16 @@ } ] }, + "modifier": { + "multiple": false, + "required": false, + "types": [ + { + "type": "modifier", + "named": true + } + ] + }, "name": { "multiple": false, "required": true, @@ -116,13 +193,51 @@ "named": true } ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + }, + "visibility": { + "multiple": false, + "required": false, + "types": [ + { + "type": "visibility", + "named": true + } + ] } } }, { "type": "class_body", "named": true, - "fields": {} + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "case", + "named": true + }, + { + "type": "field", + "named": true + }, + { + "type": "method", + "named": true + } + ] + } }, { "type": "external_function", @@ -197,7 +312,53 @@ "required": false, "types": [ { - "type": "public", + "type": "visibility", + "named": true + } + ] + } + } + }, + { + "type": "field", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "field_name", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "fn_type", + "named": true + }, + { + "type": "generic_type", + "named": true + }, + { + "type": "mut_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "uni_type", "named": true } ] @@ -280,6 +441,71 @@ } } }, + { + "type": "implement_trait", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "implement_trait_body", + "named": true + } + ] + }, + "bounds": { + "multiple": false, + "required": false, + "types": [ + { + "type": "bounds", + "named": true + } + ] + }, + "class": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant", + "named": true + } + ] + }, + "trait": { + "multiple": false, + "required": true, + "types": [ + { + "type": "generic_type", + "named": true + }, + { + "type": "type", + "named": true + } + ] + } + } + }, + { + "type": "implement_trait_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "method", + "named": true + } + ] + } + }, { "type": "import", "named": true, @@ -358,6 +584,111 @@ } } }, + { + "type": "method", + "named": true, + "fields": { + "arguments": { + "multiple": false, + "required": false, + "types": [ + { + "type": "arguments", + "named": true + } + ] + }, + "body": { + "multiple": false, + "required": false, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "modifier": { + "multiple": false, + "required": false, + "types": [ + { + "type": "modifier", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "returns": { + "multiple": true, + "required": false, + "types": [ + { + "type": "->", + "named": false + }, + { + "type": "fn_type", + "named": true + }, + { + "type": "generic_type", + "named": true + }, + { + "type": "mut_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "type", + "named": true + }, + { + "type": "uni_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + }, + "visibility": { + "multiple": false, + "required": false, + "types": [ + { + "type": "visibility", + "named": true + } + ] + } + } + }, + { + "type": "modifier", + "named": true, + "fields": {} + }, { "type": "module_method", "named": true, @@ -441,7 +772,7 @@ "required": false, "types": [ { - "type": "public", + "type": "visibility", "named": true } ] @@ -540,6 +871,66 @@ } } }, + { + "type": "reopen_class", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "reopen_class_body", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant", + "named": true + } + ] + } + } + }, + { + "type": "reopen_class_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "method", + "named": true + } + ] + } + }, + { + "type": "required_traits", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "generic_type", + "named": true + }, + { + "type": "type", + "named": true + } + ] + } + }, { "type": "requirements", "named": true, @@ -584,6 +975,10 @@ "type": "external_function", "named": true }, + { + "type": "implement_trait", + "named": true + }, { "type": "import", "named": true @@ -591,6 +986,14 @@ { "type": "module_method", "named": true + }, + { + "type": "reopen_class", + "named": true + }, + { + "type": "trait", + "named": true } ] } @@ -637,6 +1040,77 @@ ] } }, + { + "type": "trait", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "trait_body", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant", + "named": true + } + ] + }, + "requirements": { + "multiple": false, + "required": false, + "types": [ + { + "type": "required_traits", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + }, + "visibility": { + "multiple": false, + "required": false, + "types": [ + { + "type": "visibility", + "named": true + } + ] + } + } + }, + { + "type": "trait_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "method", + "named": true + } + ] + } + }, { "type": "type_arguments", "named": true, @@ -798,25 +1272,49 @@ "named": false }, { - "type": "class", + "type": "async", "named": false }, { - "type": "comment", - "named": true + "type": "async mut", + "named": false + }, + { + "type": "builtin", + "named": false + }, + { + "type": "case", + "named": false + }, + { + "type": "class", + "named": false }, { "type": "constant", "named": true }, + { + "type": "enum", + "named": false + }, { "type": "extern", "named": false }, + { + "type": "field_name", + "named": true + }, { "type": "fn", "named": false }, + { + "type": "for", + "named": false + }, { "type": "identifier", "named": true @@ -825,18 +1323,30 @@ "type": "if", "named": false }, + { + "type": "impl", + "named": false + }, { "type": "import", "named": false }, { - "type": "mut", + "type": "let", "named": false }, { - "type": "public", + "type": "line_comment", "named": true }, + { + "type": "move", + "named": false + }, + { + "type": "mut", + "named": false + }, { "type": "ref", "named": false @@ -845,6 +1355,14 @@ "type": "self", "named": true }, + { + "type": "static", + "named": false + }, + { + "type": "trait", + "named": false + }, { "type": "type", "named": true @@ -853,6 +1371,10 @@ "type": "uni", "named": false }, + { + "type": "visibility", + "named": true + }, { "type": "{", "named": false diff --git a/src/parser.c b/src/parser.c index 310cac8..96354ef 100644 --- a/src/parser.c +++ b/src/parser.c @@ -5,15 +5,15 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 188 +#define STATE_COUNT 429 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 67 +#define SYMBOL_COUNT 104 #define ALIAS_COUNT 1 -#define TOKEN_COUNT 28 +#define TOKEN_COUNT 40 #define EXTERNAL_TOKEN_COUNT 0 -#define FIELD_COUNT 12 -#define MAX_ALIAS_SEQUENCE_LENGTH 7 -#define PRODUCTION_ID_COUNT 47 +#define FIELD_COUNT 16 +#define MAX_ALIAS_SEQUENCE_LENGTH 8 +#define PRODUCTION_ID_COUNT 104 enum ts_symbol_identifiers { sym_identifier = 1, @@ -34,55 +34,92 @@ enum ts_symbol_identifiers { anon_sym_RBRACK = 16, anon_sym_PLUS = 17, anon_sym_mut = 18, - sym_public = 19, - anon_sym_class = 20, - anon_sym_LBRACE = 21, - anon_sym_RBRACE = 22, - anon_sym_ref = 23, - anon_sym_uni = 24, - sym_self = 25, - sym_comment = 26, - sym_constant = 27, - sym_source_file = 28, - sym__top_level = 29, - sym_import = 30, - sym_path = 31, - sym_symbols = 32, - sym__symbol = 33, - sym_import_as = 34, - sym_tags = 35, - sym_external_function = 36, - sym_extern_arguments = 37, - sym_module_method = 38, - sym_method_arguments = 39, - sym_argument = 40, - sym_rest_argument = 41, - sym__returns = 42, - sym_type_parameters = 43, - sym_type_parameter = 44, - sym_type_parameter_requirements = 45, - sym__type_parameter_requirement = 46, - sym_mutable_requirement = 47, - sym_class = 48, - sym_class_body = 49, - sym__type = 50, - sym_generic_type = 51, - sym_type_arguments = 52, - sym_ref_type = 53, - sym_mut_type = 54, - sym_uni_type = 55, - sym_fn_type = 56, - sym_fn_type_arguments = 57, - sym_block = 58, - aux_sym_source_file_repeat1 = 59, - aux_sym_path_repeat1 = 60, - aux_sym_symbols_repeat1 = 61, - aux_sym_tags_repeat1 = 62, - aux_sym_extern_arguments_repeat1 = 63, - aux_sym_type_parameters_repeat1 = 64, - aux_sym_type_parameter_requirements_repeat1 = 65, - aux_sym_type_arguments_repeat1 = 66, - alias_sym_type = 67, + sym_visibility = 19, + anon_sym_move = 20, + anon_sym_asyncmut = 21, + anon_sym_async = 22, + anon_sym_static = 23, + anon_sym_class = 24, + anon_sym_builtin = 25, + anon_sym_enum = 26, + anon_sym_LBRACE = 27, + anon_sym_RBRACE = 28, + anon_sym_let = 29, + anon_sym_case = 30, + anon_sym_trait = 31, + anon_sym_impl = 32, + anon_sym_for = 33, + anon_sym_ref = 34, + anon_sym_uni = 35, + sym_self = 36, + sym_line_comment = 37, + sym_field_name = 38, + sym_constant = 39, + sym_source_file = 40, + sym__top_level = 41, + sym_import = 42, + sym_path = 43, + sym_symbols = 44, + sym__symbol = 45, + sym_import_as = 46, + sym_tags = 47, + sym_external_function = 48, + sym_extern_arguments = 49, + sym_module_method = 50, + sym_method_arguments = 51, + sym_argument = 52, + sym_rest_argument = 53, + sym__returns = 54, + sym_type_parameters = 55, + sym_type_parameter = 56, + sym_type_parameter_requirements = 57, + sym__type_parameter_requirement = 58, + sym_mutable_requirement = 59, + sym__method_modifier = 60, + sym_class = 61, + sym__class_modifier = 62, + sym_class_body = 63, + sym__class_expression = 64, + sym_field = 65, + sym_case = 66, + sym_case_arguments = 67, + sym_class_method = 68, + sym_trait = 69, + sym_trait_body = 70, + sym_trait_method = 71, + sym__trait_method_modifier = 72, + sym_required_traits = 73, + sym__required_trait = 74, + sym_implement_trait = 75, + sym_implement_trait_body = 76, + sym_bounds = 77, + sym_bound = 78, + sym_bound_requirements = 79, + sym_reopen_class = 80, + sym_reopen_class_body = 81, + sym__type = 82, + sym_generic_type = 83, + sym_type_arguments = 84, + sym_ref_type = 85, + sym_mut_type = 86, + sym_uni_type = 87, + sym_fn_type = 88, + sym_fn_type_arguments = 89, + sym_block = 90, + aux_sym_source_file_repeat1 = 91, + aux_sym_path_repeat1 = 92, + aux_sym_symbols_repeat1 = 93, + aux_sym_tags_repeat1 = 94, + aux_sym_extern_arguments_repeat1 = 95, + aux_sym_type_parameters_repeat1 = 96, + aux_sym_type_parameter_requirements_repeat1 = 97, + aux_sym_class_body_repeat1 = 98, + aux_sym_case_arguments_repeat1 = 99, + aux_sym_trait_body_repeat1 = 100, + aux_sym_required_traits_repeat1 = 101, + aux_sym_implement_trait_body_repeat1 = 102, + aux_sym_bounds_repeat1 = 103, + alias_sym_type = 104, }; static const char * const ts_symbol_names[] = { @@ -105,14 +142,26 @@ static const char * const ts_symbol_names[] = { [anon_sym_RBRACK] = "]", [anon_sym_PLUS] = "+", [anon_sym_mut] = "mut", - [sym_public] = "public", + [sym_visibility] = "visibility", + [anon_sym_move] = "move", + [anon_sym_asyncmut] = "async mut", + [anon_sym_async] = "async", + [anon_sym_static] = "static", [anon_sym_class] = "class", + [anon_sym_builtin] = "builtin", + [anon_sym_enum] = "enum", [anon_sym_LBRACE] = "{", [anon_sym_RBRACE] = "}", + [anon_sym_let] = "let", + [anon_sym_case] = "case", + [anon_sym_trait] = "trait", + [anon_sym_impl] = "impl", + [anon_sym_for] = "for", [anon_sym_ref] = "ref", [anon_sym_uni] = "uni", [sym_self] = "self", - [sym_comment] = "comment", + [sym_line_comment] = "line_comment", + [sym_field_name] = "field_name", [sym_constant] = "constant", [sym_source_file] = "source_file", [sym__top_level] = "_top_level", @@ -134,8 +183,28 @@ static const char * const ts_symbol_names[] = { [sym_type_parameter_requirements] = "requirements", [sym__type_parameter_requirement] = "_type_parameter_requirement", [sym_mutable_requirement] = "mut", + [sym__method_modifier] = "modifier", [sym_class] = "class", + [sym__class_modifier] = "modifier", [sym_class_body] = "class_body", + [sym__class_expression] = "_class_expression", + [sym_field] = "field", + [sym_case] = "case", + [sym_case_arguments] = "arguments", + [sym_class_method] = "method", + [sym_trait] = "trait", + [sym_trait_body] = "trait_body", + [sym_trait_method] = "method", + [sym__trait_method_modifier] = "modifier", + [sym_required_traits] = "required_traits", + [sym__required_trait] = "_required_trait", + [sym_implement_trait] = "implement_trait", + [sym_implement_trait_body] = "implement_trait_body", + [sym_bounds] = "bounds", + [sym_bound] = "bound", + [sym_bound_requirements] = "requirements", + [sym_reopen_class] = "reopen_class", + [sym_reopen_class_body] = "reopen_class_body", [sym__type] = "_type", [sym_generic_type] = "generic_type", [sym_type_arguments] = "type_arguments", @@ -152,7 +221,12 @@ static const char * const ts_symbol_names[] = { [aux_sym_extern_arguments_repeat1] = "extern_arguments_repeat1", [aux_sym_type_parameters_repeat1] = "type_parameters_repeat1", [aux_sym_type_parameter_requirements_repeat1] = "type_parameter_requirements_repeat1", - [aux_sym_type_arguments_repeat1] = "type_arguments_repeat1", + [aux_sym_class_body_repeat1] = "class_body_repeat1", + [aux_sym_case_arguments_repeat1] = "case_arguments_repeat1", + [aux_sym_trait_body_repeat1] = "trait_body_repeat1", + [aux_sym_required_traits_repeat1] = "required_traits_repeat1", + [aux_sym_implement_trait_body_repeat1] = "implement_trait_body_repeat1", + [aux_sym_bounds_repeat1] = "bounds_repeat1", [alias_sym_type] = "type", }; @@ -176,14 +250,26 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_RBRACK] = anon_sym_RBRACK, [anon_sym_PLUS] = anon_sym_PLUS, [anon_sym_mut] = anon_sym_mut, - [sym_public] = sym_public, + [sym_visibility] = sym_visibility, + [anon_sym_move] = anon_sym_move, + [anon_sym_asyncmut] = anon_sym_asyncmut, + [anon_sym_async] = anon_sym_async, + [anon_sym_static] = anon_sym_static, [anon_sym_class] = anon_sym_class, + [anon_sym_builtin] = anon_sym_builtin, + [anon_sym_enum] = anon_sym_enum, [anon_sym_LBRACE] = anon_sym_LBRACE, [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_let] = anon_sym_let, + [anon_sym_case] = anon_sym_case, + [anon_sym_trait] = anon_sym_trait, + [anon_sym_impl] = anon_sym_impl, + [anon_sym_for] = anon_sym_for, [anon_sym_ref] = anon_sym_ref, [anon_sym_uni] = anon_sym_uni, [sym_self] = sym_self, - [sym_comment] = sym_comment, + [sym_line_comment] = sym_line_comment, + [sym_field_name] = sym_field_name, [sym_constant] = sym_constant, [sym_source_file] = sym_source_file, [sym__top_level] = sym__top_level, @@ -205,8 +291,28 @@ static const TSSymbol ts_symbol_map[] = { [sym_type_parameter_requirements] = sym_type_parameter_requirements, [sym__type_parameter_requirement] = sym__type_parameter_requirement, [sym_mutable_requirement] = sym_mutable_requirement, + [sym__method_modifier] = sym__method_modifier, [sym_class] = sym_class, + [sym__class_modifier] = sym__method_modifier, [sym_class_body] = sym_class_body, + [sym__class_expression] = sym__class_expression, + [sym_field] = sym_field, + [sym_case] = sym_case, + [sym_case_arguments] = sym_extern_arguments, + [sym_class_method] = sym_class_method, + [sym_trait] = sym_trait, + [sym_trait_body] = sym_trait_body, + [sym_trait_method] = sym_class_method, + [sym__trait_method_modifier] = sym__method_modifier, + [sym_required_traits] = sym_required_traits, + [sym__required_trait] = sym__required_trait, + [sym_implement_trait] = sym_implement_trait, + [sym_implement_trait_body] = sym_implement_trait_body, + [sym_bounds] = sym_bounds, + [sym_bound] = sym_bound, + [sym_bound_requirements] = sym_type_parameter_requirements, + [sym_reopen_class] = sym_reopen_class, + [sym_reopen_class_body] = sym_reopen_class_body, [sym__type] = sym__type, [sym_generic_type] = sym_generic_type, [sym_type_arguments] = sym_type_arguments, @@ -223,7 +329,12 @@ static const TSSymbol ts_symbol_map[] = { [aux_sym_extern_arguments_repeat1] = aux_sym_extern_arguments_repeat1, [aux_sym_type_parameters_repeat1] = aux_sym_type_parameters_repeat1, [aux_sym_type_parameter_requirements_repeat1] = aux_sym_type_parameter_requirements_repeat1, - [aux_sym_type_arguments_repeat1] = aux_sym_type_arguments_repeat1, + [aux_sym_class_body_repeat1] = aux_sym_class_body_repeat1, + [aux_sym_case_arguments_repeat1] = aux_sym_case_arguments_repeat1, + [aux_sym_trait_body_repeat1] = aux_sym_trait_body_repeat1, + [aux_sym_required_traits_repeat1] = aux_sym_required_traits_repeat1, + [aux_sym_implement_trait_body_repeat1] = aux_sym_implement_trait_body_repeat1, + [aux_sym_bounds_repeat1] = aux_sym_bounds_repeat1, [alias_sym_type] = alias_sym_type, }; @@ -304,14 +415,38 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, - [sym_public] = { + [sym_visibility] = { .visible = true, .named = true, }, + [anon_sym_move] = { + .visible = true, + .named = false, + }, + [anon_sym_asyncmut] = { + .visible = true, + .named = false, + }, + [anon_sym_async] = { + .visible = true, + .named = false, + }, + [anon_sym_static] = { + .visible = true, + .named = false, + }, [anon_sym_class] = { .visible = true, .named = false, }, + [anon_sym_builtin] = { + .visible = true, + .named = false, + }, + [anon_sym_enum] = { + .visible = true, + .named = false, + }, [anon_sym_LBRACE] = { .visible = true, .named = false, @@ -320,6 +455,26 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_let] = { + .visible = true, + .named = false, + }, + [anon_sym_case] = { + .visible = true, + .named = false, + }, + [anon_sym_trait] = { + .visible = true, + .named = false, + }, + [anon_sym_impl] = { + .visible = true, + .named = false, + }, + [anon_sym_for] = { + .visible = true, + .named = false, + }, [anon_sym_ref] = { .visible = true, .named = false, @@ -332,7 +487,11 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [sym_comment] = { + [sym_line_comment] = { + .visible = true, + .named = true, + }, + [sym_field_name] = { .visible = true, .named = true, }, @@ -420,14 +579,94 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym__method_modifier] = { + .visible = true, + .named = true, + }, [sym_class] = { .visible = true, .named = true, }, + [sym__class_modifier] = { + .visible = true, + .named = true, + }, [sym_class_body] = { .visible = true, .named = true, }, + [sym__class_expression] = { + .visible = false, + .named = true, + }, + [sym_field] = { + .visible = true, + .named = true, + }, + [sym_case] = { + .visible = true, + .named = true, + }, + [sym_case_arguments] = { + .visible = true, + .named = true, + }, + [sym_class_method] = { + .visible = true, + .named = true, + }, + [sym_trait] = { + .visible = true, + .named = true, + }, + [sym_trait_body] = { + .visible = true, + .named = true, + }, + [sym_trait_method] = { + .visible = true, + .named = true, + }, + [sym__trait_method_modifier] = { + .visible = true, + .named = true, + }, + [sym_required_traits] = { + .visible = true, + .named = true, + }, + [sym__required_trait] = { + .visible = false, + .named = true, + }, + [sym_implement_trait] = { + .visible = true, + .named = true, + }, + [sym_implement_trait_body] = { + .visible = true, + .named = true, + }, + [sym_bounds] = { + .visible = true, + .named = true, + }, + [sym_bound] = { + .visible = true, + .named = true, + }, + [sym_bound_requirements] = { + .visible = true, + .named = true, + }, + [sym_reopen_class] = { + .visible = true, + .named = true, + }, + [sym_reopen_class_body] = { + .visible = true, + .named = true, + }, [sym__type] = { .visible = false, .named = true, @@ -492,7 +731,27 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, - [aux_sym_type_arguments_repeat1] = { + [aux_sym_class_body_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_case_arguments_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_trait_body_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_required_traits_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_implement_trait_body_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_bounds_repeat1] = { .visible = false, .named = false, }, @@ -506,15 +765,19 @@ enum ts_field_identifiers { field_alias = 1, field_arguments = 2, field_body = 3, - field_name = 4, - field_path = 5, - field_requirements = 6, - field_returns = 7, - field_symbols = 8, - field_tags = 9, - field_type = 10, - field_type_parameters = 11, - field_visibility = 12, + field_bounds = 4, + field_class = 5, + field_modifier = 6, + field_name = 7, + field_path = 8, + field_requirements = 9, + field_returns = 10, + field_symbols = 11, + field_tags = 12, + field_trait = 13, + field_type = 14, + field_type_parameters = 15, + field_visibility = 16, }; static const char * const ts_field_names[] = { @@ -522,12 +785,16 @@ static const char * const ts_field_names[] = { [field_alias] = "alias", [field_arguments] = "arguments", [field_body] = "body", + [field_bounds] = "bounds", + [field_class] = "class", + [field_modifier] = "modifier", [field_name] = "name", [field_path] = "path", [field_requirements] = "requirements", [field_returns] = "returns", [field_symbols] = "symbols", [field_tags] = "tags", + [field_trait] = "trait", [field_type] = "type", [field_type_parameters] = "type_parameters", [field_visibility] = "visibility", @@ -539,46 +806,103 @@ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [3] = {.index = 3, .length = 2}, [4] = {.index = 5, .length = 1}, [5] = {.index = 6, .length = 2}, - [6] = {.index = 8, .length = 3}, - [7] = {.index = 11, .length = 2}, + [6] = {.index = 8, .length = 2}, + [7] = {.index = 10, .length = 3}, [8] = {.index = 13, .length = 2}, [9] = {.index = 15, .length = 2}, [10] = {.index = 17, .length = 2}, - [11] = {.index = 19, .length = 3}, - [13] = {.index = 22, .length = 1}, - [14] = {.index = 23, .length = 3}, - [15] = {.index = 26, .length = 3}, - [16] = {.index = 29, .length = 3}, - [17] = {.index = 32, .length = 3}, - [18] = {.index = 35, .length = 3}, - [19] = {.index = 38, .length = 3}, - [20] = {.index = 41, .length = 3}, - [21] = {.index = 44, .length = 3}, - [22] = {.index = 47, .length = 3}, - [23] = {.index = 50, .length = 4}, - [24] = {.index = 54, .length = 4}, - [25] = {.index = 58, .length = 4}, - [26] = {.index = 62, .length = 1}, - [27] = {.index = 63, .length = 1}, - [28] = {.index = 64, .length = 1}, - [29] = {.index = 65, .length = 2}, - [30] = {.index = 67, .length = 2}, - [31] = {.index = 69, .length = 4}, - [32] = {.index = 73, .length = 4}, - [33] = {.index = 77, .length = 4}, - [34] = {.index = 81, .length = 3}, - [35] = {.index = 84, .length = 4}, - [36] = {.index = 88, .length = 4}, - [37] = {.index = 92, .length = 4}, - [38] = {.index = 96, .length = 4}, - [39] = {.index = 100, .length = 5}, - [40] = {.index = 105, .length = 5}, - [41] = {.index = 110, .length = 5}, - [42] = {.index = 115, .length = 2}, - [43] = {.index = 117, .length = 2}, - [44] = {.index = 119, .length = 5}, - [45] = {.index = 124, .length = 5}, - [46] = {.index = 129, .length = 6}, + [11] = {.index = 19, .length = 2}, + [12] = {.index = 21, .length = 3}, + [14] = {.index = 24, .length = 1}, + [15] = {.index = 25, .length = 3}, + [16] = {.index = 28, .length = 3}, + [17] = {.index = 31, .length = 3}, + [18] = {.index = 34, .length = 3}, + [19] = {.index = 37, .length = 3}, + [20] = {.index = 40, .length = 3}, + [21] = {.index = 43, .length = 3}, + [22] = {.index = 46, .length = 3}, + [23] = {.index = 49, .length = 3}, + [24] = {.index = 52, .length = 3}, + [25] = {.index = 55, .length = 3}, + [26] = {.index = 58, .length = 4}, + [27] = {.index = 62, .length = 4}, + [28] = {.index = 66, .length = 4}, + [29] = {.index = 70, .length = 1}, + [30] = {.index = 71, .length = 1}, + [31] = {.index = 72, .length = 1}, + [32] = {.index = 73, .length = 2}, + [33] = {.index = 75, .length = 4}, + [34] = {.index = 79, .length = 4}, + [35] = {.index = 83, .length = 4}, + [36] = {.index = 87, .length = 4}, + [37] = {.index = 91, .length = 1}, + [38] = {.index = 92, .length = 4}, + [39] = {.index = 96, .length = 4}, + [40] = {.index = 100, .length = 4}, + [41] = {.index = 104, .length = 3}, + [42] = {.index = 104, .length = 3}, + [43] = {.index = 107, .length = 3}, + [44] = {.index = 110, .length = 4}, + [45] = {.index = 114, .length = 4}, + [46] = {.index = 118, .length = 4}, + [47] = {.index = 122, .length = 4}, + [48] = {.index = 126, .length = 5}, + [49] = {.index = 131, .length = 5}, + [50] = {.index = 136, .length = 5}, + [51] = {.index = 141, .length = 2}, + [52] = {.index = 143, .length = 2}, + [53] = {.index = 145, .length = 5}, + [54] = {.index = 150, .length = 5}, + [55] = {.index = 155, .length = 2}, + [56] = {.index = 157, .length = 5}, + [57] = {.index = 162, .length = 2}, + [58] = {.index = 164, .length = 2}, + [59] = {.index = 166, .length = 2}, + [60] = {.index = 168, .length = 2}, + [61] = {.index = 170, .length = 4}, + [62] = {.index = 170, .length = 4}, + [63] = {.index = 174, .length = 5}, + [64] = {.index = 179, .length = 6}, + [65] = {.index = 185, .length = 2}, + [66] = {.index = 187, .length = 3}, + [67] = {.index = 190, .length = 3}, + [68] = {.index = 193, .length = 3}, + [69] = {.index = 196, .length = 3}, + [70] = {.index = 199, .length = 3}, + [71] = {.index = 202, .length = 3}, + [72] = {.index = 205, .length = 3}, + [73] = {.index = 208, .length = 3}, + [74] = {.index = 211, .length = 3}, + [75] = {.index = 214, .length = 3}, + [76] = {.index = 217, .length = 4}, + [77] = {.index = 221, .length = 4}, + [78] = {.index = 225, .length = 4}, + [79] = {.index = 229, .length = 4}, + [80] = {.index = 233, .length = 4}, + [81] = {.index = 237, .length = 4}, + [82] = {.index = 241, .length = 4}, + [83] = {.index = 245, .length = 4}, + [84] = {.index = 249, .length = 4}, + [85] = {.index = 253, .length = 4}, + [86] = {.index = 257, .length = 4}, + [87] = {.index = 261, .length = 4}, + [88] = {.index = 265, .length = 5}, + [89] = {.index = 270, .length = 5}, + [90] = {.index = 275, .length = 5}, + [91] = {.index = 280, .length = 5}, + [92] = {.index = 285, .length = 5}, + [93] = {.index = 290, .length = 5}, + [94] = {.index = 295, .length = 5}, + [95] = {.index = 300, .length = 5}, + [96] = {.index = 305, .length = 5}, + [97] = {.index = 310, .length = 5}, + [98] = {.index = 315, .length = 6}, + [99] = {.index = 321, .length = 6}, + [100] = {.index = 327, .length = 6}, + [101] = {.index = 333, .length = 6}, + [102] = {.index = 339, .length = 6}, + [103] = {.index = 345, .length = 7}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -596,257 +920,535 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_body, 2}, {field_name, 1}, [8] = + {field_arguments, 1}, + {field_name, 0}, + [10] = {field_path, 1}, {field_symbols, 2}, {field_tags, 3}, - [11] = + [13] = {field_arguments, 3}, {field_name, 2}, - [13] = + [15] = {field_name, 2}, {field_returns, 3}, - [15] = + [17] = {field_body, 3}, {field_name, 2}, - [17] = + [19] = {field_name, 3}, {field_visibility, 1}, - [19] = + [21] = {field_body, 3}, {field_name, 2}, {field_visibility, 1}, - [22] = + [24] = {field_name, 0}, - [23] = + [25] = {field_arguments, 2}, {field_body, 3}, {field_name, 1}, - [26] = + [28] = {field_body, 3}, {field_name, 1}, {field_returns, 2}, - [29] = + [31] = {field_body, 3}, {field_name, 1}, {field_type_parameters, 2}, - [32] = + [34] = + {field_body, 3}, + {field_modifier, 1}, + {field_name, 2}, + [37] = + {field_body, 3}, + {field_name, 1}, + {field_requirements, 2}, + [40] = {field_arguments, 3}, {field_name, 2}, {field_returns, 4}, - [35] = + [43] = {field_arguments, 3}, {field_body, 4}, {field_name, 2}, - [38] = + [46] = {field_body, 4}, {field_name, 2}, {field_returns, 3}, - [41] = + [49] = {field_arguments, 4}, {field_name, 3}, {field_visibility, 1}, - [44] = + [52] = {field_name, 3}, {field_returns, 4}, {field_visibility, 1}, - [47] = + [55] = {field_body, 4}, {field_name, 3}, {field_visibility, 1}, - [50] = + [58] = {field_arguments, 3}, {field_body, 4}, {field_name, 2}, {field_visibility, 1}, - [54] = + [62] = {field_body, 4}, {field_name, 2}, {field_returns, 3}, {field_visibility, 1}, - [58] = + [66] = {field_body, 4}, {field_name, 2}, {field_type_parameters, 3}, {field_visibility, 1}, - [62] = + [70] = {field_returns, 1}, - [63] = + [71] = {field_arguments, 1}, - [64] = + [72] = {field_type, 1}, - [65] = - {field_arguments, 1}, - {field_name, 0}, - [67] = + [73] = {field_name, 0}, {field_requirements, 1}, - [69] = + [75] = {field_arguments, 2}, {field_body, 4}, {field_name, 1}, {field_returns, 3}, - [73] = + [79] = {field_arguments, 3}, {field_body, 4}, {field_name, 1}, {field_type_parameters, 2}, - [77] = + [83] = {field_body, 4}, {field_name, 1}, {field_returns, 3}, {field_type_parameters, 2}, - [81] = + [87] = + {field_body, 4}, + {field_modifier, 2}, + {field_name, 3}, + {field_visibility, 1}, + [91] = + {field_name, 1}, + [92] = + {field_body, 4}, + {field_modifier, 1}, + {field_name, 2}, + {field_type_parameters, 3}, + [96] = + {field_body, 4}, + {field_name, 2}, + {field_requirements, 3}, + {field_visibility, 1}, + [100] = + {field_body, 4}, + {field_name, 1}, + {field_requirements, 3}, + {field_type_parameters, 2}, + [104] = + {field_body, 4}, + {field_class, 3}, + {field_trait, 1}, + [107] = {field_alias, 1}, {field_alias, 2}, {field_name, 0}, - [84] = + [110] = {field_arguments, 3}, {field_body, 5}, {field_name, 2}, {field_returns, 4}, - [88] = + [114] = {field_arguments, 4}, {field_name, 3}, {field_returns, 5}, {field_visibility, 1}, - [92] = + [118] = {field_arguments, 4}, {field_body, 5}, {field_name, 3}, {field_visibility, 1}, - [96] = + [122] = {field_body, 5}, {field_name, 3}, {field_returns, 4}, {field_visibility, 1}, - [100] = + [126] = {field_arguments, 3}, {field_body, 5}, {field_name, 2}, {field_returns, 4}, {field_visibility, 1}, - [105] = + [131] = {field_arguments, 4}, {field_body, 5}, {field_name, 2}, {field_type_parameters, 3}, {field_visibility, 1}, - [110] = + [136] = {field_body, 5}, {field_name, 2}, {field_returns, 4}, {field_type_parameters, 3}, {field_visibility, 1}, - [115] = + [141] = {field_name, 0}, {field_type, 2}, - [117] = + [143] = {field_arguments, 1}, {field_returns, 2}, - [119] = + [145] = {field_arguments, 3}, {field_body, 5}, {field_name, 1}, {field_returns, 4}, {field_type_parameters, 2}, - [124] = + [150] = + {field_body, 5}, + {field_modifier, 2}, + {field_name, 3}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [155] = + {field_arguments, 2}, + {field_name, 1}, + [157] = + {field_body, 5}, + {field_name, 2}, + {field_requirements, 4}, + {field_type_parameters, 3}, + {field_visibility, 1}, + [162] = + {field_name, 2}, + {field_visibility, 1}, + [164] = + {field_name, 1}, + {field_returns, 2}, + [166] = + {field_name, 1}, + {field_type_parameters, 2}, + [168] = + {field_modifier, 1}, + {field_name, 2}, + [170] = + {field_body, 5}, + {field_bounds, 4}, + {field_class, 3}, + {field_trait, 1}, + [174] = {field_arguments, 4}, {field_body, 6}, {field_name, 3}, {field_returns, 5}, {field_visibility, 1}, - [129] = + [179] = {field_arguments, 4}, {field_body, 6}, {field_name, 2}, {field_returns, 5}, {field_type_parameters, 3}, {field_visibility, 1}, -}; - -static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { - [0] = {0}, - [12] = { - [0] = alias_sym_type, - }, -}; - -static const uint16_t ts_non_terminal_alias_map[] = { - 0, -}; - -static const TSStateId ts_primary_state_ids[STATE_COUNT] = { - [0] = 0, - [1] = 1, - [2] = 2, - [3] = 3, - [4] = 4, - [5] = 5, - [6] = 6, - [7] = 7, - [8] = 8, - [9] = 9, - [10] = 10, - [11] = 11, - [12] = 12, - [13] = 13, - [14] = 14, - [15] = 15, - [16] = 16, - [17] = 17, - [18] = 18, - [19] = 19, - [20] = 20, - [21] = 21, - [22] = 22, - [23] = 23, - [24] = 24, - [25] = 25, - [26] = 26, - [27] = 27, - [28] = 28, - [29] = 29, - [30] = 30, - [31] = 31, - [32] = 32, - [33] = 33, - [34] = 34, - [35] = 35, - [36] = 36, - [37] = 37, - [38] = 38, - [39] = 39, - [40] = 40, - [41] = 41, - [42] = 42, - [43] = 43, - [44] = 44, - [45] = 45, - [46] = 46, - [47] = 47, - [48] = 48, - [49] = 49, - [50] = 50, - [51] = 51, - [52] = 52, - [53] = 53, - [54] = 54, - [55] = 55, - [56] = 56, - [57] = 57, - [58] = 58, - [59] = 59, - [60] = 60, - [61] = 61, - [62] = 62, - [63] = 63, - [64] = 64, - [65] = 65, - [66] = 66, - [67] = 67, - [68] = 68, - [69] = 69, - [70] = 70, + [185] = + {field_name, 1}, + {field_type, 3}, + [187] = + {field_arguments, 3}, + {field_name, 2}, + {field_visibility, 1}, + [190] = + {field_name, 2}, + {field_returns, 3}, + {field_visibility, 1}, + [193] = + {field_name, 2}, + {field_type_parameters, 3}, + {field_visibility, 1}, + [196] = + {field_modifier, 2}, + {field_name, 3}, + {field_visibility, 1}, + [199] = + {field_arguments, 2}, + {field_name, 1}, + {field_returns, 3}, + [202] = + {field_arguments, 3}, + {field_name, 1}, + {field_type_parameters, 2}, + [205] = + {field_name, 1}, + {field_returns, 3}, + {field_type_parameters, 2}, + [208] = + {field_arguments, 3}, + {field_modifier, 1}, + {field_name, 2}, + [211] = + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 3}, + [214] = + {field_modifier, 1}, + {field_name, 2}, + {field_type_parameters, 3}, + [217] = + {field_arguments, 3}, + {field_body, 4}, + {field_modifier, 1}, + {field_name, 2}, + [221] = + {field_body, 4}, + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 3}, + [225] = + {field_arguments, 3}, + {field_name, 2}, + {field_returns, 4}, + {field_visibility, 1}, + [229] = + {field_arguments, 4}, + {field_name, 2}, + {field_type_parameters, 3}, + {field_visibility, 1}, + [233] = + {field_name, 2}, + {field_returns, 4}, + {field_type_parameters, 3}, + {field_visibility, 1}, + [237] = + {field_arguments, 4}, + {field_modifier, 2}, + {field_name, 3}, + {field_visibility, 1}, + [241] = + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 4}, + {field_visibility, 1}, + [245] = + {field_modifier, 2}, + {field_name, 3}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [249] = + {field_arguments, 3}, + {field_name, 1}, + {field_returns, 4}, + {field_type_parameters, 2}, + [253] = + {field_arguments, 3}, + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 4}, + [257] = + {field_arguments, 4}, + {field_modifier, 1}, + {field_name, 2}, + {field_type_parameters, 3}, + [261] = + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 4}, + {field_type_parameters, 3}, + [265] = + {field_arguments, 4}, + {field_body, 5}, + {field_modifier, 2}, + {field_name, 3}, + {field_visibility, 1}, + [270] = + {field_body, 5}, + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 4}, + {field_visibility, 1}, + [275] = + {field_arguments, 3}, + {field_body, 5}, + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 4}, + [280] = + {field_arguments, 4}, + {field_body, 5}, + {field_modifier, 1}, + {field_name, 2}, + {field_type_parameters, 3}, + [285] = + {field_body, 5}, + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 4}, + {field_type_parameters, 3}, + [290] = + {field_arguments, 4}, + {field_name, 2}, + {field_returns, 5}, + {field_type_parameters, 3}, + {field_visibility, 1}, + [295] = + {field_arguments, 4}, + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 5}, + {field_visibility, 1}, + [300] = + {field_arguments, 5}, + {field_modifier, 2}, + {field_name, 3}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [305] = + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 5}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [310] = + {field_arguments, 4}, + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 5}, + {field_type_parameters, 3}, + [315] = + {field_arguments, 4}, + {field_body, 6}, + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 5}, + {field_visibility, 1}, + [321] = + {field_arguments, 5}, + {field_body, 6}, + {field_modifier, 2}, + {field_name, 3}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [327] = + {field_body, 6}, + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 5}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [333] = + {field_arguments, 4}, + {field_body, 6}, + {field_modifier, 1}, + {field_name, 2}, + {field_returns, 5}, + {field_type_parameters, 3}, + [339] = + {field_arguments, 5}, + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 6}, + {field_type_parameters, 4}, + {field_visibility, 1}, + [345] = + {field_arguments, 5}, + {field_body, 7}, + {field_modifier, 2}, + {field_name, 3}, + {field_returns, 6}, + {field_type_parameters, 4}, + {field_visibility, 1}, +}; + +static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { + [0] = {0}, + [13] = { + [0] = alias_sym_type, + }, + [41] = { + [1] = alias_sym_type, + }, + [61] = { + [1] = alias_sym_type, + }, +}; + +static const uint16_t ts_non_terminal_alias_map[] = { + 0, +}; + +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 4, + [5] = 5, + [6] = 6, + [7] = 7, + [8] = 8, + [9] = 9, + [10] = 10, + [11] = 11, + [12] = 12, + [13] = 13, + [14] = 14, + [15] = 15, + [16] = 16, + [17] = 17, + [18] = 18, + [19] = 19, + [20] = 20, + [21] = 21, + [22] = 22, + [23] = 23, + [24] = 24, + [25] = 25, + [26] = 26, + [27] = 27, + [28] = 28, + [29] = 29, + [30] = 30, + [31] = 31, + [32] = 32, + [33] = 33, + [34] = 34, + [35] = 35, + [36] = 36, + [37] = 37, + [38] = 38, + [39] = 39, + [40] = 40, + [41] = 41, + [42] = 42, + [43] = 43, + [44] = 44, + [45] = 45, + [46] = 46, + [47] = 47, + [48] = 48, + [49] = 49, + [50] = 50, + [51] = 51, + [52] = 52, + [53] = 53, + [54] = 54, + [55] = 55, + [56] = 56, + [57] = 57, + [58] = 58, + [59] = 59, + [60] = 60, + [61] = 61, + [62] = 62, + [63] = 63, + [64] = 64, + [65] = 65, + [66] = 66, + [67] = 67, + [68] = 68, + [69] = 69, + [70] = 70, [71] = 71, [72] = 72, [73] = 73, @@ -964,6 +1566,247 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [185] = 185, [186] = 186, [187] = 187, + [188] = 188, + [189] = 189, + [190] = 190, + [191] = 191, + [192] = 192, + [193] = 193, + [194] = 194, + [195] = 195, + [196] = 196, + [197] = 197, + [198] = 198, + [199] = 199, + [200] = 200, + [201] = 201, + [202] = 202, + [203] = 203, + [204] = 204, + [205] = 205, + [206] = 206, + [207] = 207, + [208] = 208, + [209] = 209, + [210] = 210, + [211] = 211, + [212] = 212, + [213] = 213, + [214] = 214, + [215] = 215, + [216] = 216, + [217] = 217, + [218] = 218, + [219] = 219, + [220] = 220, + [221] = 221, + [222] = 222, + [223] = 223, + [224] = 224, + [225] = 225, + [226] = 226, + [227] = 227, + [228] = 228, + [229] = 229, + [230] = 230, + [231] = 231, + [232] = 232, + [233] = 233, + [234] = 234, + [235] = 235, + [236] = 236, + [237] = 237, + [238] = 238, + [239] = 239, + [240] = 240, + [241] = 241, + [242] = 242, + [243] = 243, + [244] = 244, + [245] = 245, + [246] = 246, + [247] = 247, + [248] = 248, + [249] = 249, + [250] = 250, + [251] = 251, + [252] = 252, + [253] = 253, + [254] = 254, + [255] = 255, + [256] = 256, + [257] = 257, + [258] = 258, + [259] = 259, + [260] = 260, + [261] = 261, + [262] = 262, + [263] = 263, + [264] = 264, + [265] = 265, + [266] = 266, + [267] = 267, + [268] = 268, + [269] = 269, + [270] = 270, + [271] = 271, + [272] = 272, + [273] = 273, + [274] = 274, + [275] = 275, + [276] = 276, + [277] = 277, + [278] = 278, + [279] = 279, + [280] = 280, + [281] = 281, + [282] = 282, + [283] = 283, + [284] = 284, + [285] = 285, + [286] = 286, + [287] = 287, + [288] = 288, + [289] = 289, + [290] = 290, + [291] = 291, + [292] = 292, + [293] = 293, + [294] = 294, + [295] = 295, + [296] = 296, + [297] = 297, + [298] = 298, + [299] = 299, + [300] = 300, + [301] = 301, + [302] = 302, + [303] = 303, + [304] = 304, + [305] = 305, + [306] = 306, + [307] = 307, + [308] = 308, + [309] = 309, + [310] = 310, + [311] = 311, + [312] = 312, + [313] = 313, + [314] = 314, + [315] = 315, + [316] = 316, + [317] = 317, + [318] = 318, + [319] = 319, + [320] = 320, + [321] = 321, + [322] = 322, + [323] = 323, + [324] = 324, + [325] = 325, + [326] = 326, + [327] = 327, + [328] = 328, + [329] = 329, + [330] = 330, + [331] = 331, + [332] = 332, + [333] = 333, + [334] = 334, + [335] = 335, + [336] = 336, + [337] = 337, + [338] = 338, + [339] = 339, + [340] = 340, + [341] = 341, + [342] = 342, + [343] = 343, + [344] = 344, + [345] = 345, + [346] = 346, + [347] = 347, + [348] = 348, + [349] = 349, + [350] = 350, + [351] = 351, + [352] = 352, + [353] = 353, + [354] = 354, + [355] = 355, + [356] = 356, + [357] = 357, + [358] = 358, + [359] = 359, + [360] = 360, + [361] = 361, + [362] = 362, + [363] = 363, + [364] = 364, + [365] = 365, + [366] = 366, + [367] = 367, + [368] = 368, + [369] = 369, + [370] = 370, + [371] = 371, + [372] = 372, + [373] = 373, + [374] = 374, + [375] = 375, + [376] = 376, + [377] = 377, + [378] = 378, + [379] = 379, + [380] = 380, + [381] = 381, + [382] = 382, + [383] = 383, + [384] = 384, + [385] = 385, + [386] = 386, + [387] = 387, + [388] = 388, + [389] = 389, + [390] = 390, + [391] = 391, + [392] = 392, + [393] = 393, + [394] = 394, + [395] = 395, + [396] = 396, + [397] = 397, + [398] = 398, + [399] = 399, + [400] = 400, + [401] = 401, + [402] = 402, + [403] = 403, + [404] = 404, + [405] = 405, + [406] = 406, + [407] = 407, + [408] = 408, + [409] = 409, + [410] = 410, + [411] = 411, + [412] = 412, + [413] = 413, + [414] = 414, + [415] = 415, + [416] = 416, + [417] = 417, + [418] = 418, + [419] = 419, + [420] = 420, + [421] = 421, + [422] = 422, + [423] = 423, + [424] = 424, + [425] = 425, + [426] = 426, + [427] = 427, + [428] = 428, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -971,114 +1814,190 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(6); - if (lookahead == '#') ADVANCE(20); - if (lookahead == '(') ADVANCE(9); - if (lookahead == ')') ADVANCE(11); - if (lookahead == '+') ADVANCE(17); - if (lookahead == ',') ADVANCE(10); - if (lookahead == '-') ADVANCE(4); - if (lookahead == '.') ADVANCE(8); - if (lookahead == ':') ADVANCE(12); - if (lookahead == '[') ADVANCE(15); - if (lookahead == ']') ADVANCE(16); + if (eof) ADVANCE(11); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '(') ADVANCE(14); + if (lookahead == ')') ADVANCE(16); + if (lookahead == '+') ADVANCE(22); + if (lookahead == ',') ADVANCE(15); + if (lookahead == '-') ADVANCE(5); + if (lookahead == '.') ADVANCE(13); + if (lookahead == ':') ADVANCE(17); + if (lookahead == '@') ADVANCE(9); + if (lookahead == '[') ADVANCE(20); + if (lookahead == ']') ADVANCE(21); if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(21); - if (lookahead == '{') ADVANCE(18); - if (lookahead == '}') ADVANCE(19); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + if (lookahead == '{') ADVANCE(24); + if (lookahead == '}') ADVANCE(25); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') SKIP(0) - if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(22); + if (('A' <= lookahead && lookahead <= 'Z')) ADVANCE(34); END_STATE(); case 1: - if (lookahead == '#') ADVANCE(20); - if (lookahead == ')') ADVANCE(11); - if (lookahead == '.') ADVANCE(2); + if (lookahead == '#') ADVANCE(26); + if (lookahead == ')') ADVANCE(16); + if (lookahead == '.') ADVANCE(3); if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(21); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(32); + if (lookahead == 'a') ADVANCE(30); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') SKIP(1) END_STATE(); case 2: + if (lookahead == '#') ADVANCE(26); + if (lookahead == ')') ADVANCE(16); if (lookahead == '.') ADVANCE(3); + if (lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(2) END_STATE(); case 3: - if (lookahead == '.') ADVANCE(13); + if (lookahead == '.') ADVANCE(4); END_STATE(); case 4: - if (lookahead == '>') ADVANCE(14); + if (lookahead == '.') ADVANCE(18); END_STATE(); case 5: - if (eof) ADVANCE(6); - if (lookahead == '#') ADVANCE(20); - if (lookahead == '(') ADVANCE(9); - if (lookahead == '.') ADVANCE(7); - if (lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(21); - if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ') SKIP(5) + if (lookahead == '>') ADVANCE(19); END_STATE(); case 6: - ACCEPT_TOKEN(ts_builtin_sym_end); + if (lookahead == 'm') ADVANCE(8); END_STATE(); case 7: - ACCEPT_TOKEN(anon_sym_DOT); + if (lookahead == 't') ADVANCE(23); END_STATE(); case 8: - ACCEPT_TOKEN(anon_sym_DOT); - if (lookahead == '.') ADVANCE(3); + if (lookahead == 'u') ADVANCE(7); END_STATE(); case 9: - ACCEPT_TOKEN(anon_sym_LPAREN); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(33); END_STATE(); case 10: - ACCEPT_TOKEN(anon_sym_COMMA); + if (eof) ADVANCE(11); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '(') ADVANCE(14); + if (lookahead == '.') ADVANCE(12); + if (lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') SKIP(10) END_STATE(); case 11: - ACCEPT_TOKEN(anon_sym_RPAREN); + ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); case 12: - ACCEPT_TOKEN(anon_sym_COLON); + ACCEPT_TOKEN(anon_sym_DOT); END_STATE(); case 13: - ACCEPT_TOKEN(anon_sym_DOT_DOT_DOT); + ACCEPT_TOKEN(anon_sym_DOT); + if (lookahead == '.') ADVANCE(4); END_STATE(); case 14: - ACCEPT_TOKEN(anon_sym_DASH_GT); + ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); case 15: - ACCEPT_TOKEN(anon_sym_LBRACK); + ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); case 16: - ACCEPT_TOKEN(anon_sym_RBRACK); + ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); case 17: - ACCEPT_TOKEN(anon_sym_PLUS); + ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); case 18: - ACCEPT_TOKEN(anon_sym_LBRACE); + ACCEPT_TOKEN(anon_sym_DOT_DOT_DOT); END_STATE(); case 19: - ACCEPT_TOKEN(anon_sym_RBRACE); + ACCEPT_TOKEN(anon_sym_DASH_GT); END_STATE(); case 20: - ACCEPT_TOKEN(sym_comment); - if (lookahead != 0 && - lookahead != '\n') ADVANCE(20); + ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); case 21: - ACCEPT_TOKEN(sym_identifier); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(21); + ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); case 22: - ACCEPT_TOKEN(sym_constant); - if (('0' <= lookahead && lookahead <= '9') || + ACCEPT_TOKEN(anon_sym_PLUS); + END_STATE(); + case 23: + ACCEPT_TOKEN(anon_sym_asyncmut); + END_STATE(); + case 24: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 25: + ACCEPT_TOKEN(anon_sym_RBRACE); + END_STATE(); + case 26: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(26); + END_STATE(); + case 27: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == ' ') ADVANCE(6); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + END_STATE(); + case 28: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'c') ADVANCE(27); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + END_STATE(); + case 29: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'n') ADVANCE(28); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + END_STATE(); + case 30: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 's') ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + END_STATE(); + case 31: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'y') ADVANCE(29); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + END_STATE(); + case 32: + ACCEPT_TOKEN(sym_identifier); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(32); + END_STATE(); + case 33: + ACCEPT_TOKEN(sym_field_name); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(33); + END_STATE(); + case 34: + ACCEPT_TOKEN(sym_constant); + if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(22); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(34); END_STATE(); default: return false; @@ -1091,140 +2010,255 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { switch (state) { case 0: if (lookahead == 'a') ADVANCE(1); - if (lookahead == 'c') ADVANCE(2); - if (lookahead == 'e') ADVANCE(3); - if (lookahead == 'f') ADVANCE(4); - if (lookahead == 'i') ADVANCE(5); - if (lookahead == 'm') ADVANCE(6); - if (lookahead == 'p') ADVANCE(7); - if (lookahead == 'r') ADVANCE(8); - if (lookahead == 's') ADVANCE(9); - if (lookahead == 'u') ADVANCE(10); + if (lookahead == 'b') ADVANCE(2); + if (lookahead == 'c') ADVANCE(3); + if (lookahead == 'e') ADVANCE(4); + if (lookahead == 'f') ADVANCE(5); + if (lookahead == 'i') ADVANCE(6); + if (lookahead == 'l') ADVANCE(7); + if (lookahead == 'm') ADVANCE(8); + if (lookahead == 'p') ADVANCE(9); + if (lookahead == 'r') ADVANCE(10); + if (lookahead == 's') ADVANCE(11); + if (lookahead == 't') ADVANCE(12); + if (lookahead == 'u') ADVANCE(13); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ') SKIP(0) END_STATE(); case 1: - if (lookahead == 'n') ADVANCE(11); - if (lookahead == 's') ADVANCE(12); + if (lookahead == 'n') ADVANCE(14); + if (lookahead == 's') ADVANCE(15); END_STATE(); case 2: - if (lookahead == 'l') ADVANCE(13); + if (lookahead == 'u') ADVANCE(16); END_STATE(); case 3: - if (lookahead == 'x') ADVANCE(14); + if (lookahead == 'a') ADVANCE(17); + if (lookahead == 'l') ADVANCE(18); END_STATE(); case 4: - if (lookahead == 'n') ADVANCE(15); + if (lookahead == 'n') ADVANCE(19); + if (lookahead == 'x') ADVANCE(20); END_STATE(); case 5: - if (lookahead == 'f') ADVANCE(16); - if (lookahead == 'm') ADVANCE(17); + if (lookahead == 'n') ADVANCE(21); + if (lookahead == 'o') ADVANCE(22); END_STATE(); case 6: - if (lookahead == 'u') ADVANCE(18); + if (lookahead == 'f') ADVANCE(23); + if (lookahead == 'm') ADVANCE(24); END_STATE(); case 7: - if (lookahead == 'u') ADVANCE(19); + if (lookahead == 'e') ADVANCE(25); END_STATE(); case 8: - if (lookahead == 'e') ADVANCE(20); + if (lookahead == 'o') ADVANCE(26); + if (lookahead == 'u') ADVANCE(27); END_STATE(); case 9: - if (lookahead == 'e') ADVANCE(21); + if (lookahead == 'u') ADVANCE(28); END_STATE(); case 10: - if (lookahead == 'n') ADVANCE(22); + if (lookahead == 'e') ADVANCE(29); END_STATE(); case 11: - if (lookahead == 'd') ADVANCE(23); + if (lookahead == 'e') ADVANCE(30); + if (lookahead == 't') ADVANCE(31); END_STATE(); case 12: - ACCEPT_TOKEN(anon_sym_as); + if (lookahead == 'r') ADVANCE(32); END_STATE(); case 13: - if (lookahead == 'a') ADVANCE(24); + if (lookahead == 'n') ADVANCE(33); END_STATE(); case 14: - if (lookahead == 't') ADVANCE(25); + if (lookahead == 'd') ADVANCE(34); END_STATE(); case 15: - ACCEPT_TOKEN(anon_sym_fn); + ACCEPT_TOKEN(anon_sym_as); + if (lookahead == 'y') ADVANCE(35); END_STATE(); case 16: - ACCEPT_TOKEN(anon_sym_if); + if (lookahead == 'i') ADVANCE(36); END_STATE(); case 17: - if (lookahead == 'p') ADVANCE(26); + if (lookahead == 's') ADVANCE(37); END_STATE(); case 18: - if (lookahead == 't') ADVANCE(27); + if (lookahead == 'a') ADVANCE(38); END_STATE(); case 19: - if (lookahead == 'b') ADVANCE(28); + if (lookahead == 'u') ADVANCE(39); END_STATE(); case 20: - if (lookahead == 'f') ADVANCE(29); + if (lookahead == 't') ADVANCE(40); END_STATE(); case 21: - if (lookahead == 'l') ADVANCE(30); + ACCEPT_TOKEN(anon_sym_fn); END_STATE(); case 22: - if (lookahead == 'i') ADVANCE(31); + if (lookahead == 'r') ADVANCE(41); END_STATE(); case 23: - ACCEPT_TOKEN(anon_sym_and); + ACCEPT_TOKEN(anon_sym_if); END_STATE(); case 24: - if (lookahead == 's') ADVANCE(32); + if (lookahead == 'p') ADVANCE(42); END_STATE(); case 25: - if (lookahead == 'e') ADVANCE(33); + if (lookahead == 't') ADVANCE(43); END_STATE(); case 26: - if (lookahead == 'o') ADVANCE(34); + if (lookahead == 'v') ADVANCE(44); END_STATE(); case 27: - ACCEPT_TOKEN(anon_sym_mut); + if (lookahead == 't') ADVANCE(45); END_STATE(); case 28: - ACCEPT_TOKEN(sym_public); + if (lookahead == 'b') ADVANCE(46); END_STATE(); case 29: - ACCEPT_TOKEN(anon_sym_ref); + if (lookahead == 'f') ADVANCE(47); END_STATE(); case 30: - if (lookahead == 'f') ADVANCE(35); + if (lookahead == 'l') ADVANCE(48); END_STATE(); case 31: - ACCEPT_TOKEN(anon_sym_uni); + if (lookahead == 'a') ADVANCE(49); END_STATE(); case 32: - if (lookahead == 's') ADVANCE(36); + if (lookahead == 'a') ADVANCE(50); END_STATE(); case 33: - if (lookahead == 'r') ADVANCE(37); + if (lookahead == 'i') ADVANCE(51); END_STATE(); case 34: - if (lookahead == 'r') ADVANCE(38); + ACCEPT_TOKEN(anon_sym_and); END_STATE(); case 35: - ACCEPT_TOKEN(sym_self); + if (lookahead == 'n') ADVANCE(52); END_STATE(); case 36: - ACCEPT_TOKEN(anon_sym_class); + if (lookahead == 'l') ADVANCE(53); END_STATE(); case 37: - if (lookahead == 'n') ADVANCE(39); + if (lookahead == 'e') ADVANCE(54); END_STATE(); case 38: - if (lookahead == 't') ADVANCE(40); + if (lookahead == 's') ADVANCE(55); END_STATE(); case 39: - ACCEPT_TOKEN(anon_sym_extern); + if (lookahead == 'm') ADVANCE(56); END_STATE(); case 40: + if (lookahead == 'e') ADVANCE(57); + END_STATE(); + case 41: + ACCEPT_TOKEN(anon_sym_for); + END_STATE(); + case 42: + if (lookahead == 'l') ADVANCE(58); + if (lookahead == 'o') ADVANCE(59); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_let); + END_STATE(); + case 44: + if (lookahead == 'e') ADVANCE(60); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_mut); + END_STATE(); + case 46: + ACCEPT_TOKEN(sym_visibility); + END_STATE(); + case 47: + ACCEPT_TOKEN(anon_sym_ref); + END_STATE(); + case 48: + if (lookahead == 'f') ADVANCE(61); + END_STATE(); + case 49: + if (lookahead == 't') ADVANCE(62); + END_STATE(); + case 50: + if (lookahead == 'i') ADVANCE(63); + END_STATE(); + case 51: + ACCEPT_TOKEN(anon_sym_uni); + END_STATE(); + case 52: + if (lookahead == 'c') ADVANCE(64); + END_STATE(); + case 53: + if (lookahead == 't') ADVANCE(65); + END_STATE(); + case 54: + ACCEPT_TOKEN(anon_sym_case); + END_STATE(); + case 55: + if (lookahead == 's') ADVANCE(66); + END_STATE(); + case 56: + ACCEPT_TOKEN(anon_sym_enum); + END_STATE(); + case 57: + if (lookahead == 'r') ADVANCE(67); + END_STATE(); + case 58: + ACCEPT_TOKEN(anon_sym_impl); + END_STATE(); + case 59: + if (lookahead == 'r') ADVANCE(68); + END_STATE(); + case 60: + ACCEPT_TOKEN(anon_sym_move); + END_STATE(); + case 61: + ACCEPT_TOKEN(sym_self); + END_STATE(); + case 62: + if (lookahead == 'i') ADVANCE(69); + END_STATE(); + case 63: + if (lookahead == 't') ADVANCE(70); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_async); + END_STATE(); + case 65: + if (lookahead == 'i') ADVANCE(71); + END_STATE(); + case 66: + ACCEPT_TOKEN(anon_sym_class); + END_STATE(); + case 67: + if (lookahead == 'n') ADVANCE(72); + END_STATE(); + case 68: + if (lookahead == 't') ADVANCE(73); + END_STATE(); + case 69: + if (lookahead == 'c') ADVANCE(74); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_trait); + END_STATE(); + case 71: + if (lookahead == 'n') ADVANCE(75); + END_STATE(); + case 72: + ACCEPT_TOKEN(anon_sym_extern); + END_STATE(); + case 73: ACCEPT_TOKEN(anon_sym_import); END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_static); + END_STATE(); + case 75: + ACCEPT_TOKEN(anon_sym_builtin); + END_STATE(); default: return false; } @@ -1261,48 +2295,48 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [27] = {.lex_state = 0}, [28] = {.lex_state = 0}, [29] = {.lex_state = 0}, - [30] = {.lex_state = 5}, + [30] = {.lex_state = 0}, [31] = {.lex_state = 0}, [32] = {.lex_state = 0}, - [33] = {.lex_state = 5}, + [33] = {.lex_state = 0}, [34] = {.lex_state = 0}, [35] = {.lex_state = 0}, [36] = {.lex_state = 0}, - [37] = {.lex_state = 5}, + [37] = {.lex_state = 0}, [38] = {.lex_state = 0}, [39] = {.lex_state = 0}, [40] = {.lex_state = 0}, [41] = {.lex_state = 0}, - [42] = {.lex_state = 0}, + [42] = {.lex_state = 10}, [43] = {.lex_state = 0}, - [44] = {.lex_state = 5}, + [44] = {.lex_state = 0}, [45] = {.lex_state = 0}, - [46] = {.lex_state = 0}, + [46] = {.lex_state = 10}, [47] = {.lex_state = 0}, - [48] = {.lex_state = 0}, + [48] = {.lex_state = 10}, [49] = {.lex_state = 0}, [50] = {.lex_state = 0}, [51] = {.lex_state = 0}, [52] = {.lex_state = 0}, [53] = {.lex_state = 0}, - [54] = {.lex_state = 0}, + [54] = {.lex_state = 10}, [55] = {.lex_state = 0}, [56] = {.lex_state = 0}, [57] = {.lex_state = 0}, [58] = {.lex_state = 0}, [59] = {.lex_state = 0}, [60] = {.lex_state = 0}, - [61] = {.lex_state = 0}, + [61] = {.lex_state = 1}, [62] = {.lex_state = 0}, [63] = {.lex_state = 0}, [64] = {.lex_state = 0}, [65] = {.lex_state = 0}, [66] = {.lex_state = 0}, - [67] = {.lex_state = 1}, + [67] = {.lex_state = 0}, [68] = {.lex_state = 0}, [69] = {.lex_state = 0}, [70] = {.lex_state = 0}, - [71] = {.lex_state = 1}, + [71] = {.lex_state = 0}, [72] = {.lex_state = 0}, [73] = {.lex_state = 0}, [74] = {.lex_state = 0}, @@ -1316,7 +2350,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [82] = {.lex_state = 0}, [83] = {.lex_state = 0}, [84] = {.lex_state = 0}, - [85] = {.lex_state = 0}, + [85] = {.lex_state = 1}, [86] = {.lex_state = 0}, [87] = {.lex_state = 0}, [88] = {.lex_state = 0}, @@ -1362,7 +2396,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [128] = {.lex_state = 0}, [129] = {.lex_state = 0}, [130] = {.lex_state = 0}, - [131] = {.lex_state = 1}, + [131] = {.lex_state = 0}, [132] = {.lex_state = 0}, [133] = {.lex_state = 0}, [134] = {.lex_state = 0}, @@ -1401,9 +2435,9 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [167] = {.lex_state = 0}, [168] = {.lex_state = 0}, [169] = {.lex_state = 0}, - [170] = {.lex_state = 0}, + [170] = {.lex_state = 2}, [171] = {.lex_state = 0}, - [172] = {.lex_state = 0}, + [172] = {.lex_state = 2}, [173] = {.lex_state = 0}, [174] = {.lex_state = 0}, [175] = {.lex_state = 0}, @@ -1419,6 +2453,247 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [185] = {.lex_state = 0}, [186] = {.lex_state = 0}, [187] = {.lex_state = 0}, + [188] = {.lex_state = 0}, + [189] = {.lex_state = 0}, + [190] = {.lex_state = 0}, + [191] = {.lex_state = 0}, + [192] = {.lex_state = 0}, + [193] = {.lex_state = 0}, + [194] = {.lex_state = 0}, + [195] = {.lex_state = 0}, + [196] = {.lex_state = 0}, + [197] = {.lex_state = 0}, + [198] = {.lex_state = 0}, + [199] = {.lex_state = 0}, + [200] = {.lex_state = 0}, + [201] = {.lex_state = 0}, + [202] = {.lex_state = 0}, + [203] = {.lex_state = 0}, + [204] = {.lex_state = 0}, + [205] = {.lex_state = 0}, + [206] = {.lex_state = 0}, + [207] = {.lex_state = 0}, + [208] = {.lex_state = 0}, + [209] = {.lex_state = 0}, + [210] = {.lex_state = 0}, + [211] = {.lex_state = 0}, + [212] = {.lex_state = 0}, + [213] = {.lex_state = 0}, + [214] = {.lex_state = 0}, + [215] = {.lex_state = 0}, + [216] = {.lex_state = 0}, + [217] = {.lex_state = 0}, + [218] = {.lex_state = 0}, + [219] = {.lex_state = 0}, + [220] = {.lex_state = 0}, + [221] = {.lex_state = 0}, + [222] = {.lex_state = 0}, + [223] = {.lex_state = 0}, + [224] = {.lex_state = 0}, + [225] = {.lex_state = 0}, + [226] = {.lex_state = 0}, + [227] = {.lex_state = 0}, + [228] = {.lex_state = 0}, + [229] = {.lex_state = 0}, + [230] = {.lex_state = 0}, + [231] = {.lex_state = 0}, + [232] = {.lex_state = 0}, + [233] = {.lex_state = 0}, + [234] = {.lex_state = 0}, + [235] = {.lex_state = 0}, + [236] = {.lex_state = 0}, + [237] = {.lex_state = 0}, + [238] = {.lex_state = 0}, + [239] = {.lex_state = 0}, + [240] = {.lex_state = 0}, + [241] = {.lex_state = 0}, + [242] = {.lex_state = 0}, + [243] = {.lex_state = 0}, + [244] = {.lex_state = 0}, + [245] = {.lex_state = 0}, + [246] = {.lex_state = 0}, + [247] = {.lex_state = 0}, + [248] = {.lex_state = 0}, + [249] = {.lex_state = 0}, + [250] = {.lex_state = 0}, + [251] = {.lex_state = 0}, + [252] = {.lex_state = 0}, + [253] = {.lex_state = 0}, + [254] = {.lex_state = 0}, + [255] = {.lex_state = 0}, + [256] = {.lex_state = 0}, + [257] = {.lex_state = 0}, + [258] = {.lex_state = 0}, + [259] = {.lex_state = 0}, + [260] = {.lex_state = 0}, + [261] = {.lex_state = 0}, + [262] = {.lex_state = 0}, + [263] = {.lex_state = 0}, + [264] = {.lex_state = 0}, + [265] = {.lex_state = 0}, + [266] = {.lex_state = 0}, + [267] = {.lex_state = 0}, + [268] = {.lex_state = 0}, + [269] = {.lex_state = 0}, + [270] = {.lex_state = 0}, + [271] = {.lex_state = 0}, + [272] = {.lex_state = 0}, + [273] = {.lex_state = 0}, + [274] = {.lex_state = 0}, + [275] = {.lex_state = 0}, + [276] = {.lex_state = 0}, + [277] = {.lex_state = 0}, + [278] = {.lex_state = 0}, + [279] = {.lex_state = 0}, + [280] = {.lex_state = 0}, + [281] = {.lex_state = 1}, + [282] = {.lex_state = 0}, + [283] = {.lex_state = 0}, + [284] = {.lex_state = 0}, + [285] = {.lex_state = 0}, + [286] = {.lex_state = 0}, + [287] = {.lex_state = 0}, + [288] = {.lex_state = 0}, + [289] = {.lex_state = 0}, + [290] = {.lex_state = 0}, + [291] = {.lex_state = 0}, + [292] = {.lex_state = 0}, + [293] = {.lex_state = 0}, + [294] = {.lex_state = 0}, + [295] = {.lex_state = 0}, + [296] = {.lex_state = 0}, + [297] = {.lex_state = 0}, + [298] = {.lex_state = 0}, + [299] = {.lex_state = 0}, + [300] = {.lex_state = 0}, + [301] = {.lex_state = 0}, + [302] = {.lex_state = 0}, + [303] = {.lex_state = 0}, + [304] = {.lex_state = 0}, + [305] = {.lex_state = 0}, + [306] = {.lex_state = 0}, + [307] = {.lex_state = 0}, + [308] = {.lex_state = 0}, + [309] = {.lex_state = 0}, + [310] = {.lex_state = 0}, + [311] = {.lex_state = 0}, + [312] = {.lex_state = 0}, + [313] = {.lex_state = 0}, + [314] = {.lex_state = 0}, + [315] = {.lex_state = 0}, + [316] = {.lex_state = 0}, + [317] = {.lex_state = 0}, + [318] = {.lex_state = 0}, + [319] = {.lex_state = 0}, + [320] = {.lex_state = 0}, + [321] = {.lex_state = 0}, + [322] = {.lex_state = 0}, + [323] = {.lex_state = 0}, + [324] = {.lex_state = 0}, + [325] = {.lex_state = 0}, + [326] = {.lex_state = 0}, + [327] = {.lex_state = 0}, + [328] = {.lex_state = 0}, + [329] = {.lex_state = 0}, + [330] = {.lex_state = 0}, + [331] = {.lex_state = 0}, + [332] = {.lex_state = 0}, + [333] = {.lex_state = 0}, + [334] = {.lex_state = 0}, + [335] = {.lex_state = 0}, + [336] = {.lex_state = 0}, + [337] = {.lex_state = 0}, + [338] = {.lex_state = 0}, + [339] = {.lex_state = 0}, + [340] = {.lex_state = 0}, + [341] = {.lex_state = 0}, + [342] = {.lex_state = 0}, + [343] = {.lex_state = 0}, + [344] = {.lex_state = 0}, + [345] = {.lex_state = 0}, + [346] = {.lex_state = 0}, + [347] = {.lex_state = 0}, + [348] = {.lex_state = 0}, + [349] = {.lex_state = 0}, + [350] = {.lex_state = 0}, + [351] = {.lex_state = 0}, + [352] = {.lex_state = 0}, + [353] = {.lex_state = 0}, + [354] = {.lex_state = 0}, + [355] = {.lex_state = 0}, + [356] = {.lex_state = 0}, + [357] = {.lex_state = 0}, + [358] = {.lex_state = 0}, + [359] = {.lex_state = 0}, + [360] = {.lex_state = 0}, + [361] = {.lex_state = 0}, + [362] = {.lex_state = 0}, + [363] = {.lex_state = 0}, + [364] = {.lex_state = 0}, + [365] = {.lex_state = 0}, + [366] = {.lex_state = 0}, + [367] = {.lex_state = 0}, + [368] = {.lex_state = 0}, + [369] = {.lex_state = 0}, + [370] = {.lex_state = 0}, + [371] = {.lex_state = 0}, + [372] = {.lex_state = 0}, + [373] = {.lex_state = 0}, + [374] = {.lex_state = 0}, + [375] = {.lex_state = 0}, + [376] = {.lex_state = 0}, + [377] = {.lex_state = 0}, + [378] = {.lex_state = 0}, + [379] = {.lex_state = 0}, + [380] = {.lex_state = 0}, + [381] = {.lex_state = 0}, + [382] = {.lex_state = 0}, + [383] = {.lex_state = 0}, + [384] = {.lex_state = 0}, + [385] = {.lex_state = 0}, + [386] = {.lex_state = 0}, + [387] = {.lex_state = 0}, + [388] = {.lex_state = 0}, + [389] = {.lex_state = 0}, + [390] = {.lex_state = 0}, + [391] = {.lex_state = 0}, + [392] = {.lex_state = 0}, + [393] = {.lex_state = 0}, + [394] = {.lex_state = 0}, + [395] = {.lex_state = 0}, + [396] = {.lex_state = 0}, + [397] = {.lex_state = 0}, + [398] = {.lex_state = 0}, + [399] = {.lex_state = 0}, + [400] = {.lex_state = 0}, + [401] = {.lex_state = 0}, + [402] = {.lex_state = 0}, + [403] = {.lex_state = 0}, + [404] = {.lex_state = 0}, + [405] = {.lex_state = 0}, + [406] = {.lex_state = 0}, + [407] = {.lex_state = 0}, + [408] = {.lex_state = 0}, + [409] = {.lex_state = 0}, + [410] = {.lex_state = 0}, + [411] = {.lex_state = 0}, + [412] = {.lex_state = 0}, + [413] = {.lex_state = 0}, + [414] = {.lex_state = 0}, + [415] = {.lex_state = 0}, + [416] = {.lex_state = 0}, + [417] = {.lex_state = 0}, + [418] = {.lex_state = 0}, + [419] = {.lex_state = 0}, + [420] = {.lex_state = 0}, + [421] = {.lex_state = 0}, + [422] = {.lex_state = 0}, + [423] = {.lex_state = 0}, + [424] = {.lex_state = 0}, + [425] = {.lex_state = 0}, + [426] = {.lex_state = 0}, + [427] = {.lex_state = 0}, + [428] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -1442,45 +2717,61 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_RBRACK] = ACTIONS(1), [anon_sym_PLUS] = ACTIONS(1), [anon_sym_mut] = ACTIONS(1), - [sym_public] = ACTIONS(1), + [sym_visibility] = ACTIONS(1), + [anon_sym_move] = ACTIONS(1), + [anon_sym_async] = ACTIONS(1), + [anon_sym_static] = ACTIONS(1), [anon_sym_class] = ACTIONS(1), + [anon_sym_builtin] = ACTIONS(1), + [anon_sym_enum] = ACTIONS(1), [anon_sym_LBRACE] = ACTIONS(1), [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_let] = ACTIONS(1), + [anon_sym_case] = ACTIONS(1), + [anon_sym_trait] = ACTIONS(1), + [anon_sym_impl] = ACTIONS(1), + [anon_sym_for] = ACTIONS(1), [anon_sym_ref] = ACTIONS(1), [anon_sym_uni] = ACTIONS(1), [sym_self] = ACTIONS(1), - [sym_comment] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [sym_field_name] = ACTIONS(1), [sym_constant] = ACTIONS(1), }, [1] = { - [sym_source_file] = STATE(185), - [sym__top_level] = STATE(16), - [sym_import] = STATE(16), - [sym_external_function] = STATE(16), - [sym_module_method] = STATE(16), - [sym_class] = STATE(16), - [aux_sym_source_file_repeat1] = STATE(16), + [sym_source_file] = STATE(407), + [sym__top_level] = STATE(7), + [sym_import] = STATE(7), + [sym_external_function] = STATE(7), + [sym_module_method] = STATE(7), + [sym_class] = STATE(7), + [sym_trait] = STATE(7), + [sym_implement_trait] = STATE(7), + [sym_reopen_class] = STATE(7), + [aux_sym_source_file_repeat1] = STATE(7), [ts_builtin_sym_end] = ACTIONS(5), [anon_sym_import] = ACTIONS(7), [anon_sym_fn] = ACTIONS(9), [anon_sym_class] = ACTIONS(11), - [sym_comment] = ACTIONS(3), + [anon_sym_trait] = ACTIONS(13), + [anon_sym_impl] = ACTIONS(15), + [sym_line_comment] = ACTIONS(3), }, }; static const uint16_t ts_small_parse_table[] = { [0] = 6, ACTIONS(3), 1, - sym_comment, - ACTIONS(15), 1, + sym_line_comment, + ACTIONS(19), 1, anon_sym_LPAREN, - ACTIONS(17), 1, + ACTIONS(21), 1, anon_sym_DASH_GT, - STATE(15), 1, + STATE(5), 1, sym_fn_type_arguments, - STATE(39), 1, + STATE(19), 1, sym__returns, - ACTIONS(13), 8, + ACTIONS(17), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -1489,370 +2780,202 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [26] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(19), 1, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [31] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(23), 15, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_COMMA, anon_sym_RPAREN, - ACTIONS(21), 1, anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, + anon_sym_RBRACK, + anon_sym_PLUS, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + anon_sym_for, + [52] = 4, + ACTIONS(3), 1, + sym_line_comment, ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(139), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [56] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, + anon_sym_LBRACK, + STATE(6), 1, + sym_type_arguments, + ACTIONS(25), 13, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_COMMA, + anon_sym_RPAREN, anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - ACTIONS(31), 1, anon_sym_RBRACK, - STATE(142), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [86] = 8, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [77] = 4, ACTIONS(3), 1, - sym_comment, + sym_line_comment, ACTIONS(21), 1, + anon_sym_DASH_GT, + STATE(17), 1, + sym__returns, + ACTIONS(29), 13, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_COMMA, + anon_sym_RPAREN, anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - ACTIONS(33), 1, anon_sym_RBRACK, - STATE(122), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [116] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - ACTIONS(35), 1, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [102] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(31), 15, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_COMMA, anon_sym_RPAREN, - STATE(122), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [146] = 8, + anon_sym_fn, + anon_sym_RBRACK, + anon_sym_PLUS, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + anon_sym_for, + [123] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(7), 1, + anon_sym_import, + ACTIONS(9), 1, + anon_sym_fn, + ACTIONS(11), 1, + anon_sym_class, + ACTIONS(13), 1, + anon_sym_trait, + ACTIONS(15), 1, + anon_sym_impl, + ACTIONS(33), 1, + ts_builtin_sym_end, + STATE(11), 9, + sym__top_level, + sym_import, + sym_external_function, + sym_module_method, + sym_class, + sym_trait, + sym_implement_trait, + sym_reopen_class, + aux_sym_source_file_repeat1, + [156] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, + sym_line_comment, + ACTIONS(35), 15, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_COMMA, + anon_sym_RPAREN, anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - ACTIONS(37), 1, - anon_sym_RPAREN, - STATE(122), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [176] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - ACTIONS(39), 1, - anon_sym_RBRACK, - STATE(122), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [206] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(122), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [233] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(34), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [260] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(32), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [287] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(31), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [314] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(41), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [341] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, - anon_sym_fn, - ACTIONS(23), 1, - anon_sym_mut, - ACTIONS(25), 1, - anon_sym_ref, - ACTIONS(27), 1, - anon_sym_uni, - ACTIONS(29), 1, - sym_constant, - STATE(147), 6, - sym__type, - sym_generic_type, - sym_ref_type, - sym_mut_type, - sym_uni_type, - sym_fn_type, - [368] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - STATE(38), 1, - sym__returns, - ACTIONS(41), 8, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_PLUS, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + anon_sym_for, + [177] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(37), 15, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_COMMA, anon_sym_RPAREN, anon_sym_fn, anon_sym_RBRACK, + anon_sym_PLUS, anon_sym_class, anon_sym_LBRACE, - [388] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_import, - ACTIONS(9), 1, - anon_sym_fn, - ACTIONS(11), 1, - anon_sym_class, - ACTIONS(43), 1, - ts_builtin_sym_end, - STATE(18), 6, - sym__top_level, - sym_import, - sym_external_function, - sym_module_method, - sym_class, - aux_sym_source_file_repeat1, - [412] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(47), 1, - anon_sym_LBRACK, - STATE(22), 1, - sym_type_arguments, - ACTIONS(45), 8, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + anon_sym_for, + [198] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(39), 15, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, anon_sym_RPAREN, anon_sym_fn, anon_sym_RBRACK, + anon_sym_PLUS, anon_sym_class, anon_sym_LBRACE, - [432] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(49), 1, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + anon_sym_for, + [219] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(41), 1, ts_builtin_sym_end, - ACTIONS(51), 1, + ACTIONS(43), 1, anon_sym_import, - ACTIONS(54), 1, + ACTIONS(46), 1, anon_sym_fn, - ACTIONS(57), 1, + ACTIONS(49), 1, anon_sym_class, - STATE(18), 6, + ACTIONS(52), 1, + anon_sym_trait, + ACTIONS(55), 1, + anon_sym_impl, + STATE(11), 9, sym__top_level, sym_import, sym_external_function, sym_module_method, sym_class, + sym_trait, + sym_implement_trait, + sym_reopen_class, aux_sym_source_file_repeat1, - [456] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - ACTIONS(62), 1, - anon_sym_LPAREN, - ACTIONS(64), 1, - anon_sym_LBRACE, - STATE(36), 1, - sym_extern_arguments, - STATE(51), 1, - sym__returns, - STATE(86), 1, - sym_block, - ACTIONS(60), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [484] = 8, - ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - ACTIONS(62), 1, - anon_sym_LPAREN, - ACTIONS(64), 1, - anon_sym_LBRACE, - STATE(40), 1, - sym_extern_arguments, - STATE(60), 1, - sym__returns, - STATE(102), 1, - sym_block, - ACTIONS(66), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [512] = 2, + [252] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(68), 9, + sym_line_comment, + ACTIONS(58), 14, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -1862,49 +2985,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [527] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(70), 9, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_fn, - anon_sym_RBRACK, - anon_sym_PLUS, - anon_sym_class, - anon_sym_LBRACE, - [542] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(72), 9, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_fn, - anon_sym_RBRACK, - anon_sym_PLUS, - anon_sym_class, - anon_sym_LBRACE, - [557] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(74), 9, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [272] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(60), 14, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, anon_sym_RPAREN, anon_sym_fn, + anon_sym_DASH_GT, anon_sym_RBRACK, - anon_sym_PLUS, anon_sym_class, anon_sym_LBRACE, - [572] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(76), 9, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [292] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(62), 14, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -1914,10 +3021,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [587] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(78), 9, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [312] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(64), 14, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -1927,63 +3039,66 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [602] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(80), 9, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [332] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(66), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, anon_sym_RPAREN, anon_sym_fn, anon_sym_RBRACK, - anon_sym_PLUS, anon_sym_class, anon_sym_LBRACE, - [617] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(82), 9, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [351] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(68), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, anon_sym_RPAREN, anon_sym_fn, - anon_sym_DASH_GT, anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [632] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(84), 9, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [370] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(70), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, anon_sym_RPAREN, anon_sym_fn, anon_sym_RBRACK, - anon_sym_PLUS, anon_sym_class, anon_sym_LBRACE, - [647] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(88), 1, - anon_sym_DOT, - STATE(30), 1, - aux_sym_path_repeat1, - ACTIONS(86), 6, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_fn, - anon_sym_class, - [665] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(91), 8, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [389] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(72), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -1992,10 +3107,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [679] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(93), 8, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [408] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(74), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -2004,24 +3124,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [693] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(97), 1, - anon_sym_DOT, - STATE(30), 1, - aux_sym_path_repeat1, - ACTIONS(95), 6, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_LPAREN, - anon_sym_if, - anon_sym_fn, - anon_sym_class, - [711] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(99), 8, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [427] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(76), 13, ts_builtin_sym_end, anon_sym_import, anon_sym_COMMA, @@ -2030,1553 +3141,4536 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_class, anon_sym_LBRACE, - [725] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LPAREN, - ACTIONS(105), 1, - anon_sym_if, - STATE(49), 1, - sym_symbols, - STATE(80), 1, - sym_tags, - ACTIONS(101), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [747] = 6, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [446] = 8, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - ACTIONS(64), 1, + ACTIONS(80), 1, + anon_sym_LPAREN, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(58), 1, + STATE(43), 1, + sym_extern_arguments, + STATE(74), 1, sym__returns, - STATE(108), 1, + STATE(137), 1, sym_block, - ACTIONS(107), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [769] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(97), 1, - anon_sym_DOT, - STATE(33), 1, - aux_sym_path_repeat1, - ACTIONS(109), 6, + ACTIONS(78), 6, ts_builtin_sym_end, anon_sym_import, - anon_sym_LPAREN, - anon_sym_if, anon_sym_fn, anon_sym_class, - [787] = 2, + anon_sym_trait, + anon_sym_impl, + [476] = 8, ACTIONS(3), 1, - sym_comment, - ACTIONS(111), 8, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_COMMA, + sym_line_comment, + ACTIONS(84), 1, anon_sym_RPAREN, + ACTIONS(86), 1, anon_sym_fn, - anon_sym_RBRACK, - anon_sym_class, - anon_sym_LBRACE, - [801] = 2, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(299), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [506] = 8, ACTIONS(3), 1, - sym_comment, - ACTIONS(113), 8, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_COMMA, - anon_sym_RPAREN, + sym_line_comment, + ACTIONS(86), 1, anon_sym_fn, - anon_sym_RBRACK, - anon_sym_class, - anon_sym_LBRACE, - [815] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(96), 1, + anon_sym_RPAREN, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [536] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(98), 1, + anon_sym_RPAREN, + STATE(277), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [566] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(100), 1, + anon_sym_RPAREN, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [596] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - ACTIONS(64), 1, + ACTIONS(80), 1, + anon_sym_LPAREN, + ACTIONS(82), 1, anon_sym_LBRACE, + STATE(44), 1, + sym_extern_arguments, STATE(55), 1, sym__returns, - STATE(84), 1, + STATE(151), 1, sym_block, - ACTIONS(115), 4, + ACTIONS(102), 6, ts_builtin_sym_end, anon_sym_import, anon_sym_fn, anon_sym_class, - [837] = 2, + anon_sym_trait, + anon_sym_impl, + [626] = 8, ACTIONS(3), 1, - sym_comment, - ACTIONS(117), 8, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_COMMA, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(104), 1, + anon_sym_RPAREN, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [656] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(106), 1, anon_sym_RPAREN, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [686] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(108), 1, + anon_sym_RBRACK, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [716] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(110), 1, anon_sym_RBRACK, - anon_sym_class, - anon_sym_LBRACE, - [851] = 9, + STATE(284), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [746] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + ACTIONS(112), 1, + anon_sym_RBRACK, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [776] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(21), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [803] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(20), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [830] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(16), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [857] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(390), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [884] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(286), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [911] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(18), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [938] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(86), 1, + anon_sym_fn, + ACTIONS(88), 1, + anon_sym_mut, + ACTIONS(90), 1, + anon_sym_ref, + ACTIONS(92), 1, + anon_sym_uni, + ACTIONS(94), 1, + sym_constant, + STATE(221), 6, + sym__type, + sym_generic_type, + sym_ref_type, + sym_mut_type, + sym_uni_type, + sym_fn_type, + [965] = 10, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - ACTIONS(64), 1, + ACTIONS(82), 1, anon_sym_LBRACE, - ACTIONS(119), 1, + ACTIONS(114), 1, anon_sym_LPAREN, - ACTIONS(121), 1, + ACTIONS(118), 1, anon_sym_LBRACK, STATE(63), 1, sym_type_parameters, - STATE(82), 1, + STATE(112), 1, sym_method_arguments, - STATE(83), 1, - sym_block, - STATE(162), 1, + STATE(206), 1, sym__returns, - [879] = 9, + STATE(332), 1, + sym_block, + ACTIONS(116), 2, + anon_sym_fn, + anon_sym_RBRACE, + [997] = 10, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - ACTIONS(64), 1, + ACTIONS(82), 1, anon_sym_LBRACE, - ACTIONS(119), 1, + ACTIONS(114), 1, anon_sym_LPAREN, - ACTIONS(121), 1, + ACTIONS(118), 1, anon_sym_LBRACK, - STATE(48), 1, + STATE(78), 1, sym_type_parameters, - STATE(76), 1, + STATE(96), 1, sym_method_arguments, - STATE(113), 1, - sym_block, - STATE(169), 1, + STATE(259), 1, sym__returns, - [907] = 2, + STATE(361), 1, + sym_block, + ACTIONS(120), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1029] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(86), 7, + sym_line_comment, + ACTIONS(124), 1, + anon_sym_DOT, + STATE(46), 1, + aux_sym_path_repeat1, + ACTIONS(122), 8, ts_builtin_sym_end, anon_sym_import, - anon_sym_DOT, anon_sym_LPAREN, anon_sym_if, anon_sym_fn, anon_sym_class, - [920] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(125), 1, - anon_sym_mut, - ACTIONS(127), 1, - sym_constant, - ACTIONS(123), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - STATE(95), 3, - sym__type_parameter_requirement, - sym_mutable_requirement, - sym_generic_type, - [939] = 2, + anon_sym_trait, + anon_sym_impl, + [1049] = 6, ACTIONS(3), 1, - sym_comment, - ACTIONS(129), 6, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(57), 1, + sym__returns, + STATE(152), 1, + sym_block, + ACTIONS(126), 6, ts_builtin_sym_end, anon_sym_import, anon_sym_fn, - anon_sym_DASH_GT, anon_sym_class, - anon_sym_LBRACE, - [951] = 4, + anon_sym_trait, + anon_sym_impl, + [1073] = 6, ACTIONS(3), 1, - sym_comment, - ACTIONS(133), 1, - anon_sym_and, - STATE(54), 1, - aux_sym_tags_repeat1, - ACTIONS(131), 4, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(76), 1, + sym__returns, + STATE(133), 1, + sym_block, + ACTIONS(128), 6, ts_builtin_sym_end, anon_sym_import, anon_sym_fn, - anon_sym_class, - [967] = 7, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1097] = 10, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(72), 1, + sym_type_parameters, + STATE(107), 1, + sym_method_arguments, + STATE(184), 1, + sym__returns, + STATE(327), 1, + sym_block, + ACTIONS(130), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1129] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(134), 1, + anon_sym_DOT, + STATE(46), 1, + aux_sym_path_repeat1, + ACTIONS(132), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1149] = 10, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(79), 1, + sym_type_parameters, + STATE(132), 1, + sym_method_arguments, + STATE(251), 1, + sym__returns, + STATE(369), 1, + sym_block, + ACTIONS(137), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1181] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(124), 1, + anon_sym_DOT, + STATE(42), 1, + aux_sym_path_repeat1, + ACTIONS(139), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1201] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(143), 1, + anon_sym_LPAREN, + ACTIONS(145), 1, + anon_sym_if, + STATE(73), 1, + sym_symbols, + STATE(122), 1, + sym_tags, + ACTIONS(141), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1225] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(147), 1, + anon_sym_fn, + ACTIONS(149), 1, + anon_sym_RBRACE, + ACTIONS(151), 1, + anon_sym_let, + ACTIONS(153), 1, + anon_sym_case, + STATE(52), 5, + sym__class_expression, + sym_field, + sym_case, + sym_class_method, + aux_sym_class_body_repeat1, + [1248] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(155), 9, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + anon_sym_trait, + anon_sym_impl, + [1263] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(147), 1, + anon_sym_fn, + ACTIONS(151), 1, + anon_sym_let, + ACTIONS(153), 1, + anon_sym_case, + ACTIONS(157), 1, + anon_sym_RBRACE, + STATE(53), 5, + sym__class_expression, + sym_field, + sym_case, + sym_class_method, + aux_sym_class_body_repeat1, + [1286] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(159), 1, + anon_sym_fn, + ACTIONS(162), 1, + anon_sym_RBRACE, + ACTIONS(164), 1, + anon_sym_let, + ACTIONS(167), 1, + anon_sym_case, + STATE(53), 5, + sym__class_expression, + sym_field, + sym_case, + sym_class_method, + aux_sym_class_body_repeat1, + [1309] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(132), 9, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1324] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(90), 1, + sym_block, + ACTIONS(170), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1342] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(172), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_trait, + anon_sym_impl, + [1356] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(124), 1, + sym_block, + ACTIONS(174), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1374] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(176), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_trait, + anon_sym_impl, + [1388] = 9, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(138), 1, + sym_type_parameters, + STATE(237), 1, + sym_method_arguments, + STATE(240), 1, + sym_block, + STATE(382), 1, + sym__returns, + [1416] = 9, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(117), 1, + sym_type_parameters, + STATE(260), 1, + sym_block, + STATE(263), 1, + sym_method_arguments, + STATE(344), 1, + sym__returns, + [1444] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(178), 1, + sym_identifier, + ACTIONS(182), 1, + sym_visibility, + ACTIONS(184), 1, + anon_sym_asyncmut, + STATE(419), 1, + sym__method_modifier, + ACTIONS(180), 4, + anon_sym_mut, + anon_sym_move, + anon_sym_async, + anon_sym_static, + [1466] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(186), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_trait, + anon_sym_impl, + [1480] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(97), 1, + sym_method_arguments, + STATE(266), 1, + sym__returns, + STATE(357), 1, + sym_block, + ACTIONS(188), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1506] = 9, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(131), 1, + sym_type_parameters, + STATE(135), 1, + sym_block, + STATE(255), 1, + sym_method_arguments, + STATE(366), 1, + sym__returns, + [1534] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(192), 1, + anon_sym_and, + STATE(66), 1, + aux_sym_tags_repeat1, + ACTIONS(190), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1552] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(192), 1, + anon_sym_and, + STATE(68), 1, + aux_sym_tags_repeat1, + ACTIONS(194), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1570] = 9, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(115), 1, + sym_type_parameters, + STATE(222), 1, + sym_block, + STATE(231), 1, + sym_method_arguments, + STATE(338), 1, + sym__returns, + [1598] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(198), 1, + anon_sym_and, + STATE(68), 1, + aux_sym_tags_repeat1, + ACTIONS(196), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1616] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(201), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_trait, + anon_sym_impl, + [1630] = 9, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(144), 1, + sym_block, + STATE(148), 1, + sym_type_parameters, + STATE(254), 1, + sym_method_arguments, + STATE(388), 1, + sym__returns, + [1658] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(203), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_trait, + anon_sym_impl, + [1672] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(93), 1, + sym_method_arguments, + STATE(249), 1, + sym__returns, + STATE(371), 1, + sym_block, + ACTIONS(205), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1698] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(145), 1, + anon_sym_if, + STATE(153), 1, + sym_tags, + ACTIONS(207), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1716] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(156), 1, + sym_block, + ACTIONS(209), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1734] = 9, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + ACTIONS(118), 1, + anon_sym_LBRACK, + STATE(101), 1, + sym_type_parameters, + STATE(229), 1, + sym_method_arguments, + STATE(234), 1, + sym_block, + STATE(336), 1, + sym__returns, + [1762] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(121), 1, + sym_block, + ACTIONS(211), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1780] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(213), 8, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_class, + anon_sym_LBRACE, + anon_sym_trait, + anon_sym_impl, + [1794] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(91), 1, + sym_method_arguments, + STATE(205), 1, + sym__returns, + STATE(370), 1, + sym_block, + ACTIONS(215), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1820] = 8, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(111), 1, + sym_method_arguments, + STATE(193), 1, + sym__returns, + STATE(399), 1, + sym_block, + ACTIONS(217), 2, + anon_sym_fn, + anon_sym_RBRACE, + [1846] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(219), 1, + ts_builtin_sym_end, + ACTIONS(221), 1, + sym_identifier, + ACTIONS(223), 5, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1863] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(196), 7, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_and, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1876] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(227), 1, + anon_sym_mut, + ACTIONS(229), 1, + sym_constant, + ACTIONS(225), 2, + anon_sym_COMMA, + anon_sym_LBRACE, + STATE(179), 3, + sym__type_parameter_requirement, + sym_mutable_requirement, + sym_generic_type, + [1895] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(231), 7, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1908] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(227), 1, + anon_sym_mut, + ACTIONS(229), 1, + sym_constant, + ACTIONS(233), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + STATE(228), 3, + sym__type_parameter_requirement, + sym_mutable_requirement, + sym_generic_type, + [1927] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(184), 1, + anon_sym_asyncmut, + ACTIONS(235), 1, + sym_identifier, + STATE(401), 1, + sym__method_modifier, + ACTIONS(180), 4, + anon_sym_mut, + anon_sym_move, + anon_sym_async, + anon_sym_static, + [1946] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(237), 7, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1959] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(239), 7, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1972] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(241), 7, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_if, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1985] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(243), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [1997] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(245), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2009] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(185), 1, + sym__returns, + STATE(328), 1, + sym_block, + ACTIONS(247), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2029] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(249), 1, + sym_visibility, + ACTIONS(253), 1, + sym_constant, + STATE(427), 1, + sym__class_modifier, + ACTIONS(251), 3, + anon_sym_async, + anon_sym_builtin, + anon_sym_enum, + [2047] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(199), 1, + sym__returns, + STATE(356), 1, + sym_block, + ACTIONS(255), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2067] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(257), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2079] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(259), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2091] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(207), 1, + sym__returns, + STATE(384), 1, + sym_block, + ACTIONS(261), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2111] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(208), 1, + sym__returns, + STATE(398), 1, + sym_block, + ACTIONS(263), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2131] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(265), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2143] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(267), 6, + anon_sym_LPAREN, + anon_sym_fn, + anon_sym_COLON, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [2155] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(269), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2167] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(220), 1, + sym_block, + STATE(227), 1, + sym_method_arguments, + STATE(387), 1, + sym__returns, + [2189] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(271), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2201] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(273), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2213] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(118), 1, + anon_sym_LBRACK, + ACTIONS(275), 1, + anon_sym_COLON, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(109), 1, + sym_trait_body, + STATE(211), 1, + sym_type_parameters, + STATE(400), 1, + sym_required_traits, + [2235] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(279), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2247] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(281), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2259] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(253), 1, + sym__returns, + STATE(367), 1, + sym_block, + ACTIONS(283), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2279] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(285), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2291] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(287), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2303] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(289), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2315] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(257), 1, + sym__returns, + STATE(314), 1, + sym_block, + ACTIONS(291), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2335] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(267), 1, + sym__returns, + STATE(353), 1, + sym_block, + ACTIONS(293), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2355] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(295), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2367] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(297), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2379] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(272), 1, + sym_block, + STATE(274), 1, + sym_method_arguments, + STATE(347), 1, + sym__returns, + [2401] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(299), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2413] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(203), 1, + sym_method_arguments, + STATE(224), 1, + sym_block, + STATE(333), 1, + sym__returns, + [2435] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(301), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2447] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(303), 6, + anon_sym_LPAREN, + anon_sym_fn, + anon_sym_COLON, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [2459] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(305), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2471] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(307), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2483] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(309), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2495] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(311), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2507] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(313), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2519] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(315), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2531] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(319), 1, + anon_sym_RPAREN, + ACTIONS(321), 1, + sym_constant, + ACTIONS(317), 2, + sym_self, + sym_identifier, + STATE(397), 2, + sym__symbol, + sym_import_as, + [2549] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(323), 1, + anon_sym_LPAREN, + STATE(244), 1, + sym_case_arguments, + ACTIONS(325), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [2565] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(327), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2577] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(329), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2589] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(331), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2601] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(98), 1, + sym_block, + STATE(250), 1, + sym_method_arguments, + STATE(358), 1, + sym__returns, + [2623] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(194), 1, + sym__returns, + STATE(319), 1, + sym_block, + ACTIONS(333), 2, + anon_sym_fn, + anon_sym_RBRACE, + [2643] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(335), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2655] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(337), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2667] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(339), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2679] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(341), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2691] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(343), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2703] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(232), 1, + sym_block, + STATE(242), 1, + sym_method_arguments, + STATE(339), 1, + sym__returns, + [2725] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(345), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2737] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(347), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2749] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(349), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2761] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(351), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2773] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(353), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2785] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(355), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2797] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(357), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2809] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(359), 6, + anon_sym_LPAREN, + anon_sym_fn, + anon_sym_COLON, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [2821] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(27), 1, + anon_sym_LBRACK, + STATE(6), 1, + sym_type_arguments, + ACTIONS(361), 4, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_PLUS, + anon_sym_LBRACE, + [2837] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + ACTIONS(114), 1, + anon_sym_LPAREN, + STATE(143), 1, + sym_block, + STATE(239), 1, + sym_method_arguments, + STATE(385), 1, + sym__returns, + [2859] = 7, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(118), 1, + anon_sym_LBRACK, + ACTIONS(275), 1, + anon_sym_COLON, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(106), 1, + sym_trait_body, + STATE(183), 1, + sym_type_parameters, + STATE(321), 1, + sym_required_traits, + [2881] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(363), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2893] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(365), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2905] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(367), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2917] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(369), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2929] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(371), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2941] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(373), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2953] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(375), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2965] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(377), 6, + anon_sym_LPAREN, + anon_sym_fn, + anon_sym_COLON, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [2977] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(379), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [2989] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(381), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3001] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(383), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3013] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(385), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3025] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(387), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3037] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(389), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3049] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(391), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3061] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(393), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3073] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(395), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3085] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(321), 1, + sym_constant, + ACTIONS(397), 1, + anon_sym_RPAREN, + ACTIONS(317), 2, + sym_self, + sym_identifier, + STATE(313), 2, + sym__symbol, + sym_import_as, + [3103] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(399), 6, + ts_builtin_sym_end, + anon_sym_import, + anon_sym_fn, + anon_sym_class, + anon_sym_trait, + anon_sym_impl, + [3115] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(321), 1, + sym_constant, + ACTIONS(401), 1, + anon_sym_RPAREN, + ACTIONS(317), 2, + sym_self, + sym_identifier, + STATE(397), 2, + sym__symbol, + sym_import_as, + [3133] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(403), 1, + sym_identifier, + ACTIONS(405), 1, + anon_sym_RPAREN, + ACTIONS(407), 1, + anon_sym_DOT_DOT_DOT, + STATE(352), 1, + sym_rest_argument, + STATE(389), 1, + sym_argument, + [3152] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(321), 1, + sym_constant, + ACTIONS(317), 2, + sym_self, + sym_identifier, + STATE(397), 2, + sym__symbol, + sym_import_as, + [3167] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(403), 1, + sym_identifier, + ACTIONS(407), 1, + anon_sym_DOT_DOT_DOT, + ACTIONS(409), 1, + anon_sym_RPAREN, + STATE(324), 1, + sym_rest_argument, + STATE(389), 1, + sym_argument, + [3186] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(227), 1, + anon_sym_mut, + ACTIONS(229), 1, + sym_constant, + STATE(246), 3, + sym__type_parameter_requirement, + sym_mutable_requirement, + sym_generic_type, + [3201] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(411), 1, + sym_identifier, + ACTIONS(415), 1, + sym_visibility, + STATE(413), 1, + sym__trait_method_modifier, + ACTIONS(413), 2, + anon_sym_mut, + anon_sym_move, + [3218] = 6, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(417), 1, + anon_sym_LBRACE, + ACTIONS(419), 1, + anon_sym_for, + STATE(6), 1, + sym_type_arguments, + STATE(155), 1, + sym_reopen_class_body, + [3237] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(421), 1, + sym_constant, + STATE(402), 1, + sym__class_modifier, + ACTIONS(251), 3, + anon_sym_async, + anon_sym_builtin, + anon_sym_enum, + [3252] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(425), 1, + anon_sym_PLUS, + STATE(177), 1, + aux_sym_type_parameter_requirements_repeat1, + ACTIONS(423), 3, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_LBRACE, + [3267] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(428), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3277] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(432), 1, + anon_sym_PLUS, + STATE(197), 1, + aux_sym_type_parameter_requirements_repeat1, + ACTIONS(430), 2, + anon_sym_COMMA, + anon_sym_LBRACE, + [3291] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(403), 1, + sym_identifier, + ACTIONS(434), 1, + anon_sym_COMMA, + ACTIONS(436), 1, + anon_sym_RPAREN, + STATE(283), 1, + sym_argument, + [3307] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(118), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_LBRACE, + STATE(141), 1, + sym_class_body, + STATE(381), 1, + sym_type_parameters, + [3323] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(440), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3333] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(275), 1, + anon_sym_COLON, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(110), 1, + sym_trait_body, + STATE(349), 1, + sym_required_traits, + [3349] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(368), 1, + sym_block, + ACTIONS(442), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3363] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(316), 1, + sym_block, + ACTIONS(444), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3377] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(446), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3387] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(448), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3397] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(27), 1, + anon_sym_LBRACK, + STATE(6), 1, + sym_type_arguments, + ACTIONS(450), 2, + anon_sym_PLUS, + anon_sym_LBRACE, + [3411] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(452), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3421] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(454), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3431] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(456), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3441] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(458), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3451] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(365), 1, + sym_block, + ACTIONS(460), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3465] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(362), 1, + sym_block, + ACTIONS(462), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3479] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(464), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3489] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(466), 1, + sym_identifier, + STATE(404), 1, + sym__trait_method_modifier, + ACTIONS(413), 2, + anon_sym_mut, + anon_sym_move, + [3503] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(432), 1, + anon_sym_PLUS, + STATE(177), 1, + aux_sym_type_parameter_requirements_repeat1, + ACTIONS(468), 2, + anon_sym_COMMA, + anon_sym_LBRACE, + [3517] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(470), 1, + anon_sym_fn, + ACTIONS(473), 1, + anon_sym_RBRACE, + STATE(198), 2, + sym_trait_method, + aux_sym_trait_body_repeat1, + [3531] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(322), 1, + sym_block, + ACTIONS(475), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3545] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(147), 1, + anon_sym_fn, + ACTIONS(477), 1, + anon_sym_RBRACE, + STATE(265), 2, + sym_class_method, + aux_sym_implement_trait_body_repeat1, + [3559] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(479), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3569] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(481), 1, + anon_sym_fn, + ACTIONS(484), 1, + anon_sym_RBRACE, + STATE(202), 2, + sym_class_method, + aux_sym_implement_trait_body_repeat1, + [3583] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(238), 1, + sym_block, + STATE(380), 1, + sym__returns, + [3599] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(147), 1, + anon_sym_fn, + ACTIONS(486), 1, + anon_sym_RBRACE, + STATE(262), 2, + sym_class_method, + aux_sym_implement_trait_body_repeat1, + [3613] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(323), 1, + sym_block, + ACTIONS(488), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3627] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(354), 1, + sym_block, + ACTIONS(490), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3641] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(334), 1, + sym_block, + ACTIONS(492), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3655] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(337), 1, + sym_block, + ACTIONS(494), 2, + anon_sym_fn, + anon_sym_RBRACE, + [3669] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(496), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3679] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(498), 1, + anon_sym_fn, + ACTIONS(500), 1, + anon_sym_RBRACE, + STATE(198), 2, + sym_trait_method, + aux_sym_trait_body_repeat1, + [3693] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(275), 1, + anon_sym_COLON, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(116), 1, + sym_trait_body, + STATE(335), 1, + sym_required_traits, + [3709] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(498), 1, + anon_sym_fn, + ACTIONS(502), 1, + anon_sym_RBRACE, + STATE(210), 2, + sym_trait_method, + aux_sym_trait_body_repeat1, + [3723] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(504), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3733] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(506), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3743] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(508), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3753] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(510), 1, + anon_sym_LBRACE, + ACTIONS(512), 1, + sym_constant, + STATE(306), 2, + sym__required_trait, + sym_generic_type, + [3767] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(514), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3777] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(516), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3787] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(518), 4, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [3797] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(520), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3807] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(522), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3817] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(524), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3827] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(526), 1, + anon_sym_if, + ACTIONS(528), 1, + anon_sym_LBRACE, + STATE(154), 1, + sym_implement_trait_body, + STATE(372), 1, + sym_bounds, + [3843] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(530), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3853] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(118), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_LBRACE, + STATE(105), 1, + sym_class_body, + STATE(325), 1, + sym_type_parameters, + [3869] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(532), 4, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_PLUS, + anon_sym_LBRACE, + [3879] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(190), 1, + sym_block, + STATE(346), 1, + sym__returns, + [3895] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(432), 1, + anon_sym_PLUS, + STATE(268), 1, + aux_sym_type_parameter_requirements_repeat1, + ACTIONS(534), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [3909] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(235), 1, + sym_block, + STATE(383), 1, + sym__returns, + [3925] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(536), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3935] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(264), 1, + sym_block, + STATE(343), 1, + sym__returns, + [3951] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(538), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3961] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(540), 4, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [3971] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(542), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3981] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(544), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [3991] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(546), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4001] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(247), 1, + sym_block, + STATE(341), 1, + sym__returns, + [4017] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(548), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4027] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(134), 1, + sym_block, + STATE(392), 1, + sym__returns, + [4043] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(550), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4053] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(552), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4063] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(256), 1, + sym_block, + STATE(340), 1, + sym__returns, + [4079] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(118), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_LBRACE, + STATE(100), 1, + sym_class_body, + STATE(355), 1, + sym_type_parameters, + [4095] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(554), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4105] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(556), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4115] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(423), 4, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_PLUS, + anon_sym_LBRACE, + [4125] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(558), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4135] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(560), 4, + anon_sym_fn, + anon_sym_DASH_GT, + anon_sym_LBRACE, + anon_sym_RBRACE, + [4145] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(351), 1, + sym_block, + ACTIONS(562), 2, + anon_sym_fn, + anon_sym_RBRACE, + [4159] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(161), 1, + sym_block, + STATE(317), 1, + sym__returns, + [4175] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(320), 1, + sym_block, + ACTIONS(564), 2, + anon_sym_fn, + anon_sym_RBRACE, + [4189] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(566), 4, + anon_sym_fn, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4199] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(360), 1, + sym_block, + ACTIONS(568), 2, + anon_sym_fn, + anon_sym_RBRACE, + [4213] = 5, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - ACTIONS(64), 1, + ACTIONS(82), 1, anon_sym_LBRACE, - ACTIONS(119), 1, - anon_sym_LPAREN, - STATE(90), 1, - sym_method_arguments, - STATE(92), 1, + STATE(139), 1, sym_block, - STATE(157), 1, + STATE(375), 1, sym__returns, - [989] = 4, + [4229] = 5, ACTIONS(3), 1, - sym_comment, - ACTIONS(105), 1, - anon_sym_if, - STATE(96), 1, - sym_tags, - ACTIONS(135), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1005] = 4, + sym_line_comment, + ACTIONS(21), 1, + anon_sym_DASH_GT, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(94), 1, + sym_block, + STATE(395), 1, + sym__returns, + [4245] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(139), 1, - anon_sym_and, - STATE(50), 1, - aux_sym_tags_repeat1, - ACTIONS(137), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(570), 4, anon_sym_fn, - anon_sym_class, - [1021] = 4, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4255] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(107), 1, + STATE(364), 1, sym_block, - ACTIONS(142), 4, - ts_builtin_sym_end, - anon_sym_import, + ACTIONS(572), 2, anon_sym_fn, - anon_sym_class, - [1037] = 5, + anon_sym_RBRACE, + [4269] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(146), 1, + sym_line_comment, + ACTIONS(574), 1, + anon_sym_COMMA, + STATE(258), 1, + aux_sym_case_arguments_repeat1, + ACTIONS(577), 2, anon_sym_RPAREN, - ACTIONS(148), 1, - sym_constant, - ACTIONS(144), 2, - sym_self, - sym_identifier, - STATE(164), 2, - sym__symbol, - sym_import_as, - [1055] = 5, + anon_sym_RBRACK, + [4283] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(148), 1, - sym_constant, - ACTIONS(150), 1, - anon_sym_RPAREN, - ACTIONS(144), 2, - sym_self, - sym_identifier, - STATE(144), 2, - sym__symbol, - sym_import_as, - [1073] = 4, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(379), 1, + sym_block, + ACTIONS(579), 2, + anon_sym_fn, + anon_sym_RBRACE, + [4297] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(133), 1, - anon_sym_and, - STATE(50), 1, - aux_sym_tags_repeat1, - ACTIONS(152), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(581), 4, anon_sym_fn, - anon_sym_class, - [1089] = 4, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4307] = 5, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(118), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, anon_sym_LBRACE, - STATE(110), 1, - sym_block, - ACTIONS(154), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1105] = 2, + STATE(165), 1, + sym_class_body, + STATE(331), 1, + sym_type_parameters, + [4323] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(156), 6, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(147), 1, anon_sym_fn, + ACTIONS(583), 1, + anon_sym_RBRACE, + STATE(202), 2, + sym_class_method, + aux_sym_implement_trait_body_repeat1, + [4337] = 5, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - anon_sym_class, + ACTIONS(82), 1, anon_sym_LBRACE, - [1117] = 2, + STATE(195), 1, + sym_block, + STATE(329), 1, + sym__returns, + [4353] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(158), 6, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(585), 4, anon_sym_fn, - anon_sym_DASH_GT, - anon_sym_class, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4363] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(147), 1, + anon_sym_fn, + ACTIONS(587), 1, + anon_sym_RBRACE, + STATE(202), 2, + sym_class_method, + aux_sym_implement_trait_body_repeat1, + [4377] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - [1129] = 4, + STATE(315), 1, + sym_block, + ACTIONS(589), 2, + anon_sym_fn, + anon_sym_RBRACE, + [4391] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(91), 1, + STATE(396), 1, sym_block, - ACTIONS(160), 4, - ts_builtin_sym_end, - anon_sym_import, + ACTIONS(591), 2, anon_sym_fn, - anon_sym_class, - [1145] = 5, + anon_sym_RBRACE, + [4405] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(148), 1, - sym_constant, - ACTIONS(162), 1, - anon_sym_RPAREN, - ACTIONS(144), 2, - sym_self, - sym_identifier, - STATE(164), 2, - sym__symbol, - sym_import_as, - [1163] = 4, + sym_line_comment, + ACTIONS(432), 1, + anon_sym_PLUS, + STATE(177), 1, + aux_sym_type_parameter_requirements_repeat1, + ACTIONS(593), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [4419] = 5, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(526), 1, + anon_sym_if, + ACTIONS(528), 1, anon_sym_LBRACE, - STATE(85), 1, - sym_block, - ACTIONS(164), 4, - ts_builtin_sym_end, - anon_sym_import, + STATE(150), 1, + sym_implement_trait_body, + STATE(359), 1, + sym_bounds, + [4435] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(597), 1, + anon_sym_COLON, + STATE(330), 1, + sym_type_parameter_requirements, + ACTIONS(595), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [4449] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(599), 4, anon_sym_fn, - anon_sym_class, - [1179] = 2, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4459] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(166), 6, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(601), 4, anon_sym_fn, - anon_sym_DASH_GT, - anon_sym_class, - anon_sym_LBRACE, - [1191] = 2, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4469] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(168), 6, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(603), 4, anon_sym_fn, anon_sym_DASH_GT, - anon_sym_class, anon_sym_LBRACE, - [1203] = 7, + anon_sym_RBRACE, + [4479] = 5, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, + sym_line_comment, + ACTIONS(21), 1, anon_sym_DASH_GT, - ACTIONS(64), 1, + ACTIONS(82), 1, anon_sym_LBRACE, - ACTIONS(119), 1, - anon_sym_LPAREN, - STATE(97), 1, + STATE(214), 1, sym_block, - STATE(99), 1, - sym_method_arguments, - STATE(149), 1, + STATE(391), 1, sym__returns, - [1225] = 2, + [4495] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(170), 6, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(605), 4, anon_sym_fn, - anon_sym_DASH_GT, - anon_sym_class, - anon_sym_LBRACE, - [1237] = 4, + anon_sym_RBRACE, + anon_sym_let, + anon_sym_case, + [4505] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(148), 1, - sym_constant, - ACTIONS(144), 2, - sym_self, - sym_identifier, - STATE(164), 2, - sym__symbol, - sym_import_as, - [1252] = 2, + sym_line_comment, + ACTIONS(607), 1, + anon_sym_COMMA, + ACTIONS(609), 1, + anon_sym_RPAREN, + STATE(285), 1, + aux_sym_extern_arguments_repeat1, + [4518] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(172), 5, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_if, - anon_sym_fn, - anon_sym_class, - [1263] = 6, + sym_line_comment, + ACTIONS(611), 1, + anon_sym_COMMA, + ACTIONS(613), 1, + anon_sym_RPAREN, + STATE(294), 1, + aux_sym_case_arguments_repeat1, + [4531] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(106), 1, + anon_sym_RPAREN, + ACTIONS(615), 1, + anon_sym_COMMA, + STATE(258), 1, + aux_sym_case_arguments_repeat1, + [4544] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, + sym_line_comment, + ACTIONS(403), 1, sym_identifier, - ACTIONS(176), 1, + ACTIONS(617), 1, anon_sym_RPAREN, - ACTIONS(178), 1, - anon_sym_DOT_DOT_DOT, - STATE(161), 1, + STATE(287), 1, sym_argument, - STATE(172), 1, + [4557] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(619), 1, + anon_sym_RBRACK, + ACTIONS(621), 1, + sym_constant, + STATE(301), 1, + sym_type_parameter, + [4570] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(407), 1, + anon_sym_DOT_DOT_DOT, + ACTIONS(623), 1, + anon_sym_RPAREN, + STATE(393), 1, sym_rest_argument, - [1282] = 2, + [4583] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(180), 5, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_if, - anon_sym_fn, - anon_sym_class, - [1293] = 4, + sym_line_comment, + ACTIONS(627), 1, + anon_sym_as, + ACTIONS(625), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + [4594] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(125), 1, - anon_sym_mut, - ACTIONS(127), 1, - sym_constant, - STATE(120), 3, - sym__type_parameter_requirement, - sym_mutable_requirement, - sym_generic_type, - [1308] = 4, + sym_line_comment, + ACTIONS(623), 1, + anon_sym_RPAREN, + ACTIONS(629), 1, + anon_sym_COMMA, + STATE(298), 1, + aux_sym_extern_arguments_repeat1, + [4607] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(47), 1, - anon_sym_LBRACK, - STATE(22), 1, - sym_type_arguments, - ACTIONS(182), 3, + sym_line_comment, + ACTIONS(631), 1, + anon_sym_COMMA, + ACTIONS(633), 1, + anon_sym_RBRACK, + STATE(303), 1, + aux_sym_case_arguments_repeat1, + [4620] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(635), 1, + anon_sym_COMMA, + ACTIONS(638), 1, + anon_sym_RPAREN, + STATE(285), 1, + aux_sym_extern_arguments_repeat1, + [4633] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(577), 3, anon_sym_COMMA, + anon_sym_RPAREN, anon_sym_RBRACK, + [4642] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(640), 1, + anon_sym_COMMA, + ACTIONS(642), 1, + anon_sym_RPAREN, + STATE(276), 1, + aux_sym_extern_arguments_repeat1, + [4655] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(644), 1, anon_sym_PLUS, - [1323] = 6, + ACTIONS(647), 1, + anon_sym_LBRACE, + STATE(288), 1, + aux_sym_required_traits_repeat1, + [4668] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(649), 1, + anon_sym_LBRACE, + ACTIONS(651), 1, + sym_constant, + STATE(373), 1, + sym_bound, + [4681] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(653), 1, + anon_sym_COMMA, + ACTIONS(656), 1, + anon_sym_LBRACE, + STATE(290), 1, + aux_sym_bounds_repeat1, + [4694] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, + sym_line_comment, + ACTIONS(403), 1, sym_identifier, - ACTIONS(178), 1, - anon_sym_DOT_DOT_DOT, - ACTIONS(184), 1, + ACTIONS(609), 1, anon_sym_RPAREN, - STATE(155), 1, - sym_rest_argument, - STATE(161), 1, + STATE(389), 1, sym_argument, - [1342] = 2, + [4707] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(186), 5, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_if, - anon_sym_fn, - anon_sym_class, - [1353] = 2, + sym_line_comment, + ACTIONS(658), 1, + anon_sym_COMMA, + ACTIONS(661), 1, + anon_sym_RBRACK, + STATE(292), 1, + aux_sym_type_parameters_repeat1, + [4720] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(621), 1, + sym_constant, + ACTIONS(663), 1, + anon_sym_RBRACK, + STATE(386), 1, + sym_type_parameter, + [4733] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(100), 1, + anon_sym_RPAREN, + ACTIONS(665), 1, + anon_sym_COMMA, + STATE(258), 1, + aux_sym_case_arguments_repeat1, + [4746] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(319), 1, + anon_sym_RPAREN, + ACTIONS(667), 1, + anon_sym_COMMA, + STATE(300), 1, + aux_sym_symbols_repeat1, + [4759] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(669), 1, + anon_sym_COMMA, + ACTIONS(671), 1, + anon_sym_LBRACE, + STATE(312), 1, + aux_sym_bounds_repeat1, + [4772] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(403), 1, + sym_identifier, + ACTIONS(673), 1, + anon_sym_RPAREN, + STATE(389), 1, + sym_argument, + [4785] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(405), 1, + anon_sym_RPAREN, + ACTIONS(675), 1, + anon_sym_COMMA, + STATE(285), 1, + aux_sym_extern_arguments_repeat1, + [4798] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(677), 1, + anon_sym_COMMA, + ACTIONS(679), 1, + anon_sym_RPAREN, + STATE(278), 1, + aux_sym_case_arguments_repeat1, + [4811] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(681), 1, + anon_sym_COMMA, + ACTIONS(684), 1, + anon_sym_RPAREN, + STATE(300), 1, + aux_sym_symbols_repeat1, + [4824] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(686), 1, + anon_sym_COMMA, + ACTIONS(688), 1, + anon_sym_RBRACK, + STATE(309), 1, + aux_sym_type_parameters_repeat1, + [4837] = 4, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(651), 1, + sym_constant, + ACTIONS(690), 1, + anon_sym_LBRACE, + STATE(296), 1, + sym_bound, + [4850] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(188), 5, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_if, - anon_sym_fn, - anon_sym_class, - [1364] = 4, + sym_line_comment, + ACTIONS(112), 1, + anon_sym_RBRACK, + ACTIONS(692), 1, + anon_sym_COMMA, + STATE(258), 1, + aux_sym_case_arguments_repeat1, + [4863] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(190), 1, - ts_builtin_sym_end, - ACTIONS(192), 1, + sym_line_comment, + ACTIONS(694), 1, sym_identifier, - ACTIONS(194), 3, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1379] = 2, + ACTIONS(696), 1, + anon_sym_extern, + ACTIONS(698), 1, + sym_visibility, + [4876] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(137), 5, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_and, - anon_sym_fn, - anon_sym_class, - [1390] = 5, + sym_line_comment, + ACTIONS(700), 1, + anon_sym_PLUS, + ACTIONS(702), 1, + anon_sym_LBRACE, + STATE(288), 1, + aux_sym_required_traits_repeat1, + [4889] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(700), 1, + anon_sym_PLUS, + ACTIONS(704), 1, anon_sym_LBRACE, - STATE(88), 1, - sym_block, - STATE(158), 1, - sym__returns, - [1406] = 2, + STATE(305), 1, + aux_sym_required_traits_repeat1, + [4902] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(196), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1416] = 4, + sym_line_comment, + ACTIONS(512), 1, + sym_constant, + STATE(374), 2, + sym__required_trait, + sym_generic_type, + [4913] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(200), 1, - anon_sym_PLUS, - STATE(78), 1, - aux_sym_type_parameter_requirements_repeat1, - ACTIONS(198), 2, + sym_line_comment, + ACTIONS(706), 1, + anon_sym_as, + ACTIONS(625), 2, anon_sym_COMMA, - anon_sym_RBRACK, - [1430] = 4, + anon_sym_RPAREN, + [4924] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(203), 1, + sym_line_comment, + ACTIONS(708), 1, anon_sym_COMMA, - STATE(79), 1, - aux_sym_type_arguments_repeat1, - ACTIONS(206), 2, - anon_sym_RPAREN, + ACTIONS(710), 1, anon_sym_RBRACK, - [1444] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(208), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1454] = 4, + STATE(292), 1, + aux_sym_type_parameters_repeat1, + [4937] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(212), 1, - anon_sym_PLUS, - STATE(78), 1, - aux_sym_type_parameter_requirements_repeat1, - ACTIONS(210), 2, - anon_sym_COMMA, + sym_line_comment, + ACTIONS(621), 1, + sym_constant, + ACTIONS(710), 1, anon_sym_RBRACK, - [1468] = 5, + STATE(386), 1, + sym_type_parameter, + [4950] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(651), 1, + sym_constant, + ACTIONS(712), 1, anon_sym_LBRACE, - STATE(101), 1, - sym_block, - STATE(168), 1, - sym__returns, - [1484] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(214), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1494] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(216), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1504] = 2, + STATE(373), 1, + sym_bound, + [4963] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(218), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1514] = 2, + sym_line_comment, + ACTIONS(712), 1, + anon_sym_LBRACE, + ACTIONS(714), 1, + anon_sym_COMMA, + STATE(290), 1, + aux_sym_bounds_repeat1, + [4976] = 4, ACTIONS(3), 1, - sym_comment, - ACTIONS(220), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1524] = 2, + sym_line_comment, + ACTIONS(716), 1, + anon_sym_COMMA, + ACTIONS(718), 1, + anon_sym_RPAREN, + STATE(295), 1, + aux_sym_symbols_repeat1, + [4989] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(222), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(720), 2, anon_sym_fn, - anon_sym_class, - [1534] = 2, + anon_sym_RBRACE, + [4997] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(224), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(722), 2, anon_sym_fn, - anon_sym_class, - [1544] = 2, + anon_sym_RBRACE, + [5005] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(226), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(724), 2, anon_sym_fn, - anon_sym_class, - [1554] = 5, + anon_sym_RBRACE, + [5013] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(105), 1, + STATE(145), 1, sym_block, - STATE(167), 1, - sym__returns, - [1570] = 2, + [5023] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(228), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1580] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(230), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1590] = 2, + sym_line_comment, + ACTIONS(726), 2, + anon_sym_COMMA, + anon_sym_LBRACE, + [5031] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(232), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(728), 2, anon_sym_fn, - anon_sym_class, - [1600] = 2, + anon_sym_RBRACE, + [5039] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(234), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(730), 2, anon_sym_fn, - anon_sym_class, - [1610] = 4, + anon_sym_RBRACE, + [5047] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(212), 1, - anon_sym_PLUS, - STATE(81), 1, - aux_sym_type_parameter_requirements_repeat1, - ACTIONS(236), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [1624] = 2, + sym_line_comment, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(108), 1, + sym_trait_body, + [5057] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(238), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(732), 2, anon_sym_fn, - anon_sym_class, - [1634] = 2, + anon_sym_RBRACE, + [5065] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(240), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(734), 2, anon_sym_fn, - anon_sym_class, - [1644] = 5, + anon_sym_RBRACE, + [5073] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, - sym_identifier, - ACTIONS(242), 1, + sym_line_comment, + ACTIONS(736), 1, anon_sym_COMMA, - ACTIONS(244), 1, + ACTIONS(738), 1, anon_sym_RPAREN, - STATE(134), 1, - sym_argument, - [1660] = 5, + [5083] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DASH_GT, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(438), 1, anon_sym_LBRACE, - STATE(111), 1, - sym_block, - STATE(171), 1, - sym__returns, - [1676] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(246), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1686] = 2, + STATE(113), 1, + sym_class_body, + [5093] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1696] = 2, + sym_line_comment, + ACTIONS(740), 1, + sym_identifier, + ACTIONS(742), 1, + anon_sym_extern, + [5103] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(250), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(744), 2, anon_sym_fn, - anon_sym_class, - [1706] = 2, + anon_sym_RBRACE, + [5111] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(252), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(746), 2, anon_sym_fn, - anon_sym_class, - [1716] = 2, + anon_sym_RBRACE, + [5119] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(254), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1726] = 2, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(241), 1, + sym_block, + [5129] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(256), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1736] = 2, + sym_line_comment, + ACTIONS(748), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [5137] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(258), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1746] = 2, + sym_line_comment, + ACTIONS(438), 1, + anon_sym_LBRACE, + STATE(142), 1, + sym_class_body, + [5147] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(260), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(750), 2, anon_sym_fn, - anon_sym_class, - [1756] = 2, + anon_sym_RBRACE, + [5155] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(262), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1766] = 2, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(236), 1, + sym_block, + [5165] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(264), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(752), 2, anon_sym_fn, - anon_sym_class, - [1776] = 2, + anon_sym_RBRACE, + [5173] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(266), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1786] = 2, + sym_line_comment, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(164), 1, + sym_trait_body, + [5183] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(268), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1796] = 2, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(230), 1, + sym_block, + [5193] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(270), 4, - ts_builtin_sym_end, - anon_sym_import, + sym_line_comment, + ACTIONS(754), 2, anon_sym_fn, - anon_sym_class, - [1806] = 2, + anon_sym_RBRACE, + [5201] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(272), 4, - ts_builtin_sym_end, - anon_sym_import, - anon_sym_fn, - anon_sym_class, - [1816] = 4, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(275), 1, + sym_block, + [5211] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(276), 1, - anon_sym_COLON, - STATE(166), 1, - sym_type_parameter_requirements, - ACTIONS(274), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [1830] = 3, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(178), 1, + sym_block, + [5221] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(280), 1, - anon_sym_as, - ACTIONS(278), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [1841] = 2, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(218), 1, + sym_block, + [5231] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(282), 3, - anon_sym_LPAREN, - anon_sym_DASH_GT, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - [1850] = 4, + STATE(252), 1, + sym_block, + [5241] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(284), 1, - anon_sym_COMMA, - ACTIONS(287), 1, - anon_sym_RPAREN, - STATE(117), 1, - aux_sym_symbols_repeat1, - [1863] = 4, + sym_line_comment, + ACTIONS(756), 1, + sym_identifier, + STATE(49), 1, + sym_path, + [5251] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(289), 1, - anon_sym_COMMA, - ACTIONS(291), 1, - anon_sym_RPAREN, - STATE(145), 1, - aux_sym_extern_arguments_repeat1, - [1876] = 4, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(217), 1, + sym_block, + [5261] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(293), 1, - sym_identifier, - ACTIONS(295), 1, - anon_sym_extern, - ACTIONS(297), 1, - sym_public, - [1889] = 2, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(201), 1, + sym_block, + [5271] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(198), 3, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_PLUS, - [1898] = 4, + sym_line_comment, + ACTIONS(621), 1, + sym_constant, + STATE(386), 1, + sym_type_parameter, + [5281] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(162), 1, - anon_sym_RPAREN, - ACTIONS(299), 1, - anon_sym_COMMA, - STATE(117), 1, - aux_sym_symbols_repeat1, - [1911] = 2, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(182), 1, + sym_block, + [5291] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(206), 3, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_RBRACK, - [1920] = 4, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(213), 1, + sym_block, + [5301] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, + sym_line_comment, + ACTIONS(403), 1, sym_identifier, - ACTIONS(301), 1, - anon_sym_RPAREN, - STATE(118), 1, + STATE(389), 1, sym_argument, - [1933] = 4, + [5311] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(184), 1, + sym_line_comment, + ACTIONS(277), 1, + anon_sym_LBRACE, + STATE(136), 1, + sym_trait_body, + [5321] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(651), 1, + sym_constant, + STATE(373), 1, + sym_bound, + [5331] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(758), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5339] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(409), 1, anon_sym_RPAREN, - ACTIONS(303), 1, + ACTIONS(760), 1, anon_sym_COMMA, - STATE(137), 1, - aux_sym_extern_arguments_repeat1, - [1946] = 2, + [5349] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(305), 3, - anon_sym_LPAREN, - anon_sym_DASH_GT, + sym_line_comment, + ACTIONS(762), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5357] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(764), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5365] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(438), 1, anon_sym_LBRACE, - [1955] = 4, + STATE(163), 1, + sym_class_body, + [5375] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(307), 1, - anon_sym_RBRACK, - ACTIONS(309), 1, - sym_constant, - STATE(132), 1, - sym_type_parameter, - [1968] = 4, + sym_line_comment, + ACTIONS(766), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5383] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(311), 1, - anon_sym_COMMA, - ACTIONS(313), 1, - anon_sym_RBRACK, - STATE(140), 1, - aux_sym_type_parameters_repeat1, - [1981] = 2, + sym_line_comment, + ACTIONS(768), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5391] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(315), 3, - anon_sym_LPAREN, - anon_sym_DASH_GT, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - [1990] = 4, + STATE(162), 1, + sym_block, + [5401] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(309), 1, - sym_constant, - ACTIONS(313), 1, - anon_sym_RBRACK, - STATE(151), 1, - sym_type_parameter, - [2003] = 4, + sym_line_comment, + ACTIONS(528), 1, + anon_sym_LBRACE, + STATE(129), 1, + sym_implement_trait_body, + [5411] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(39), 1, - anon_sym_RBRACK, - ACTIONS(317), 1, - anon_sym_COMMA, - STATE(79), 1, - aux_sym_type_arguments_repeat1, - [2016] = 4, + sym_line_comment, + ACTIONS(770), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5419] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(178), 1, - anon_sym_DOT_DOT_DOT, - ACTIONS(319), 1, - anon_sym_RPAREN, - STATE(160), 1, - sym_rest_argument, - [2029] = 4, + sym_line_comment, + ACTIONS(772), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5427] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(321), 1, - anon_sym_COMMA, - ACTIONS(323), 1, - anon_sym_RBRACK, - STATE(127), 1, - aux_sym_type_parameters_repeat1, - [2042] = 4, + sym_line_comment, + ACTIONS(774), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5435] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(37), 1, - anon_sym_RPAREN, - ACTIONS(325), 1, - anon_sym_COMMA, - STATE(79), 1, - aux_sym_type_arguments_repeat1, - [2055] = 4, + sym_line_comment, + ACTIONS(776), 1, + anon_sym_COLON, + STATE(318), 1, + sym_bound_requirements, + [5445] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(319), 1, - anon_sym_RPAREN, - ACTIONS(327), 1, - anon_sym_COMMA, - STATE(124), 1, - aux_sym_extern_arguments_repeat1, - [2068] = 4, + sym_line_comment, + ACTIONS(778), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5453] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, - sym_identifier, - ACTIONS(329), 1, - anon_sym_RPAREN, - STATE(161), 1, - sym_argument, - [2081] = 4, + sym_line_comment, + ACTIONS(780), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5461] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, - sym_identifier, - ACTIONS(331), 1, - anon_sym_RPAREN, - STATE(161), 1, - sym_argument, - [2094] = 4, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(95), 1, + sym_block, + [5471] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(333), 1, - anon_sym_COMMA, - ACTIONS(336), 1, - anon_sym_RPAREN, - STATE(137), 1, - aux_sym_extern_arguments_repeat1, - [2107] = 4, + sym_line_comment, + ACTIONS(782), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5479] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(309), 1, - sym_constant, - ACTIONS(338), 1, - anon_sym_RBRACK, - STATE(151), 1, - sym_type_parameter, - [2120] = 4, + sym_line_comment, + ACTIONS(784), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5487] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(340), 1, - anon_sym_COMMA, - ACTIONS(342), 1, - anon_sym_RPAREN, - STATE(133), 1, - aux_sym_type_arguments_repeat1, - [2133] = 4, + sym_line_comment, + ACTIONS(786), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5495] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(344), 1, - anon_sym_COMMA, - ACTIONS(347), 1, - anon_sym_RBRACK, - STATE(140), 1, - aux_sym_type_parameters_repeat1, - [2146] = 3, + sym_line_comment, + ACTIONS(788), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5503] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(349), 1, - anon_sym_as, - ACTIONS(278), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [2157] = 4, + sym_line_comment, + ACTIONS(790), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5511] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(351), 1, - anon_sym_COMMA, - ACTIONS(353), 1, - anon_sym_RBRACK, - STATE(130), 1, - aux_sym_type_arguments_repeat1, - [2170] = 2, + sym_line_comment, + ACTIONS(528), 1, + anon_sym_LBRACE, + STATE(128), 1, + sym_implement_trait_body, + [5521] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(355), 3, + sym_line_comment, + ACTIONS(656), 2, anon_sym_COMMA, - anon_sym_RBRACK, + anon_sym_LBRACE, + [5529] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(647), 2, anon_sym_PLUS, - [2179] = 4, + anon_sym_LBRACE, + [5537] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(160), 1, + sym_block, + [5547] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(792), 1, + sym_constant, + STATE(423), 1, + sym_generic_type, + [5557] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(357), 1, + sym_line_comment, + ACTIONS(794), 2, anon_sym_COMMA, - ACTIONS(359), 1, anon_sym_RPAREN, - STATE(121), 1, - aux_sym_symbols_repeat1, - [2192] = 4, + [5565] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(329), 1, - anon_sym_RPAREN, - ACTIONS(361), 1, - anon_sym_COMMA, - STATE(137), 1, - aux_sym_extern_arguments_repeat1, - [2205] = 2, + sym_line_comment, + ACTIONS(796), 1, + sym_visibility, + ACTIONS(798), 1, + sym_constant, + [5575] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(363), 3, - anon_sym_LPAREN, - anon_sym_DASH_GT, + sym_line_comment, + ACTIONS(800), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5583] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - [2214] = 2, + STATE(192), 1, + sym_block, + [5593] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(365), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [2222] = 3, + sym_line_comment, + ACTIONS(438), 1, + anon_sym_LBRACE, + STATE(103), 1, + sym_class_body, + [5603] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 1, - sym_identifier, - STATE(161), 1, - sym_argument, - [2232] = 3, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(245), 1, + sym_block, + [5613] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(112), 1, + STATE(191), 1, sym_block, - [2242] = 3, + [5623] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(367), 1, - sym_identifier, - STATE(35), 1, - sym_path, - [2252] = 2, + sym_line_comment, + ACTIONS(802), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5631] = 3, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(82), 1, + anon_sym_LBRACE, + STATE(168), 1, + sym_block, + [5641] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(347), 2, + sym_line_comment, + ACTIONS(661), 2, anon_sym_COMMA, anon_sym_RBRACK, - [2260] = 2, + [5649] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(369), 2, - anon_sym_DASH_GT, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - [2268] = 2, + STATE(189), 1, + sym_block, + [5659] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(371), 2, - anon_sym_DASH_GT, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - [2276] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(373), 1, - sym_identifier, - ACTIONS(375), 1, - anon_sym_extern, - [2286] = 3, + STATE(140), 1, + sym_block, + [5669] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(176), 1, - anon_sym_RPAREN, - ACTIONS(377), 1, + sym_line_comment, + ACTIONS(638), 2, anon_sym_COMMA, - [2296] = 2, + anon_sym_RPAREN, + [5677] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(379), 2, + sym_line_comment, + ACTIONS(804), 2, anon_sym_COMMA, anon_sym_RPAREN, - [2304] = 3, + [5685] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(104), 1, + STATE(187), 1, sym_block, - [2314] = 3, + [5695] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(106), 1, + STATE(123), 1, sym_block, - [2324] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(381), 2, - anon_sym_DASH_GT, - anon_sym_LBRACE, - [2332] = 3, + [5705] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(184), 1, + sym_line_comment, + ACTIONS(405), 1, anon_sym_RPAREN, - ACTIONS(383), 1, + ACTIONS(806), 1, anon_sym_COMMA, - [2342] = 2, + [5715] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(336), 2, + sym_line_comment, + ACTIONS(808), 2, anon_sym_COMMA, anon_sym_RPAREN, - [2350] = 3, + [5723] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(82), 1, anon_sym_LBRACE, - STATE(100), 1, + STATE(159), 1, sym_block, - [2360] = 2, + [5733] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(385), 2, - anon_sym_DASH_GT, - anon_sym_LBRACE, - [2368] = 2, + sym_line_comment, + ACTIONS(810), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5741] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(287), 2, + sym_line_comment, + ACTIONS(684), 2, anon_sym_COMMA, anon_sym_RPAREN, - [2376] = 3, + [5749] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(387), 1, - anon_sym_LBRACE, - STATE(93), 1, - sym_class_body, - [2386] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(389), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [2394] = 3, + sym_line_comment, + ACTIONS(812), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5757] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, - anon_sym_LBRACE, - STATE(77), 1, - sym_block, - [2404] = 3, + sym_line_comment, + ACTIONS(814), 2, + anon_sym_fn, + anon_sym_RBRACE, + [5765] = 3, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, + sym_line_comment, + ACTIONS(277), 1, anon_sym_LBRACE, - STATE(109), 1, - sym_block, - [2414] = 3, + STATE(118), 1, + sym_trait_body, + [5775] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, - anon_sym_LBRACE, - STATE(89), 1, - sym_block, - [2424] = 3, + sym_line_comment, + ACTIONS(816), 1, + sym_identifier, + [5782] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(309), 1, + sym_line_comment, + ACTIONS(818), 1, sym_constant, - STATE(151), 1, - sym_type_parameter, - [2434] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(64), 1, - anon_sym_LBRACE, - STATE(94), 1, - sym_block, - [2444] = 3, + [5789] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(391), 1, - anon_sym_COMMA, - ACTIONS(393), 1, + sym_line_comment, + ACTIONS(820), 1, anon_sym_RPAREN, - [2454] = 2, + [5796] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(395), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [2462] = 2, + sym_line_comment, + ACTIONS(822), 1, + sym_identifier, + [5803] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(397), 1, + sym_line_comment, + ACTIONS(824), 1, + anon_sym_COLON, + [5810] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(826), 1, + anon_sym_RBRACE, + [5817] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(828), 1, + ts_builtin_sym_end, + [5824] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(830), 1, sym_identifier, - [2469] = 2, + [5831] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(393), 1, + sym_line_comment, + ACTIONS(409), 1, anon_sym_RPAREN, - [2476] = 2, + [5838] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(399), 1, - sym_identifier, - [2483] = 2, + sym_line_comment, + ACTIONS(832), 1, + sym_constant, + [5845] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(401), 1, + sym_line_comment, + ACTIONS(834), 1, sym_constant, - [2490] = 2, + [5852] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(403), 1, + sym_line_comment, + ACTIONS(832), 1, sym_identifier, - [2497] = 2, + [5859] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(176), 1, - anon_sym_RPAREN, - [2504] = 2, + sym_line_comment, + ACTIONS(836), 1, + sym_identifier, + [5866] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(405), 1, - anon_sym_RBRACE, - [2511] = 2, + sym_line_comment, + ACTIONS(838), 1, + sym_identifier, + [5873] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(401), 1, + sym_line_comment, + ACTIONS(840), 1, sym_identifier, - [2518] = 2, + [5880] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(407), 1, - anon_sym_RBRACE, - [2525] = 2, + sym_line_comment, + ACTIONS(842), 1, + sym_identifier, + [5887] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(409), 1, - anon_sym_RPAREN, - [2532] = 2, + sym_line_comment, + ACTIONS(844), 1, + sym_constant, + [5894] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(411), 1, + sym_line_comment, + ACTIONS(846), 1, + anon_sym_COLON, + [5901] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(848), 1, sym_identifier, - [2539] = 2, + [5908] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(413), 1, - ts_builtin_sym_end, - [2546] = 2, + sym_line_comment, + ACTIONS(850), 1, + sym_identifier, + [5915] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(415), 1, + sym_line_comment, + ACTIONS(852), 1, + sym_field_name, + [5922] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(854), 1, + sym_identifier, + [5929] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(856), 1, + anon_sym_for, + [5936] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(858), 1, sym_constant, - [2553] = 2, + [5943] = 2, ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_COLON, + sym_line_comment, + ACTIONS(738), 1, + anon_sym_RPAREN, + [5950] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(860), 1, + sym_constant, + [5957] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(862), 1, + sym_constant, + [5964] = 2, + ACTIONS(3), 1, + sym_line_comment, + ACTIONS(864), 1, + sym_constant, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 26, - [SMALL_STATE(4)] = 56, - [SMALL_STATE(5)] = 86, - [SMALL_STATE(6)] = 116, - [SMALL_STATE(7)] = 146, - [SMALL_STATE(8)] = 176, - [SMALL_STATE(9)] = 206, - [SMALL_STATE(10)] = 233, - [SMALL_STATE(11)] = 260, - [SMALL_STATE(12)] = 287, - [SMALL_STATE(13)] = 314, - [SMALL_STATE(14)] = 341, - [SMALL_STATE(15)] = 368, - [SMALL_STATE(16)] = 388, - [SMALL_STATE(17)] = 412, - [SMALL_STATE(18)] = 432, - [SMALL_STATE(19)] = 456, - [SMALL_STATE(20)] = 484, - [SMALL_STATE(21)] = 512, - [SMALL_STATE(22)] = 527, - [SMALL_STATE(23)] = 542, - [SMALL_STATE(24)] = 557, - [SMALL_STATE(25)] = 572, - [SMALL_STATE(26)] = 587, - [SMALL_STATE(27)] = 602, - [SMALL_STATE(28)] = 617, - [SMALL_STATE(29)] = 632, - [SMALL_STATE(30)] = 647, - [SMALL_STATE(31)] = 665, - [SMALL_STATE(32)] = 679, - [SMALL_STATE(33)] = 693, - [SMALL_STATE(34)] = 711, - [SMALL_STATE(35)] = 725, - [SMALL_STATE(36)] = 747, - [SMALL_STATE(37)] = 769, - [SMALL_STATE(38)] = 787, - [SMALL_STATE(39)] = 801, - [SMALL_STATE(40)] = 815, - [SMALL_STATE(41)] = 837, - [SMALL_STATE(42)] = 851, - [SMALL_STATE(43)] = 879, - [SMALL_STATE(44)] = 907, - [SMALL_STATE(45)] = 920, - [SMALL_STATE(46)] = 939, - [SMALL_STATE(47)] = 951, - [SMALL_STATE(48)] = 967, - [SMALL_STATE(49)] = 989, - [SMALL_STATE(50)] = 1005, - [SMALL_STATE(51)] = 1021, - [SMALL_STATE(52)] = 1037, - [SMALL_STATE(53)] = 1055, - [SMALL_STATE(54)] = 1073, - [SMALL_STATE(55)] = 1089, - [SMALL_STATE(56)] = 1105, - [SMALL_STATE(57)] = 1117, - [SMALL_STATE(58)] = 1129, - [SMALL_STATE(59)] = 1145, - [SMALL_STATE(60)] = 1163, - [SMALL_STATE(61)] = 1179, - [SMALL_STATE(62)] = 1191, - [SMALL_STATE(63)] = 1203, - [SMALL_STATE(64)] = 1225, - [SMALL_STATE(65)] = 1237, - [SMALL_STATE(66)] = 1252, - [SMALL_STATE(67)] = 1263, - [SMALL_STATE(68)] = 1282, - [SMALL_STATE(69)] = 1293, - [SMALL_STATE(70)] = 1308, - [SMALL_STATE(71)] = 1323, - [SMALL_STATE(72)] = 1342, - [SMALL_STATE(73)] = 1353, - [SMALL_STATE(74)] = 1364, - [SMALL_STATE(75)] = 1379, - [SMALL_STATE(76)] = 1390, - [SMALL_STATE(77)] = 1406, - [SMALL_STATE(78)] = 1416, - [SMALL_STATE(79)] = 1430, - [SMALL_STATE(80)] = 1444, - [SMALL_STATE(81)] = 1454, - [SMALL_STATE(82)] = 1468, - [SMALL_STATE(83)] = 1484, - [SMALL_STATE(84)] = 1494, - [SMALL_STATE(85)] = 1504, - [SMALL_STATE(86)] = 1514, - [SMALL_STATE(87)] = 1524, - [SMALL_STATE(88)] = 1534, - [SMALL_STATE(89)] = 1544, - [SMALL_STATE(90)] = 1554, - [SMALL_STATE(91)] = 1570, - [SMALL_STATE(92)] = 1580, - [SMALL_STATE(93)] = 1590, - [SMALL_STATE(94)] = 1600, - [SMALL_STATE(95)] = 1610, - [SMALL_STATE(96)] = 1624, - [SMALL_STATE(97)] = 1634, - [SMALL_STATE(98)] = 1644, - [SMALL_STATE(99)] = 1660, - [SMALL_STATE(100)] = 1676, - [SMALL_STATE(101)] = 1686, - [SMALL_STATE(102)] = 1696, - [SMALL_STATE(103)] = 1706, - [SMALL_STATE(104)] = 1716, - [SMALL_STATE(105)] = 1726, - [SMALL_STATE(106)] = 1736, - [SMALL_STATE(107)] = 1746, - [SMALL_STATE(108)] = 1756, - [SMALL_STATE(109)] = 1766, - [SMALL_STATE(110)] = 1776, - [SMALL_STATE(111)] = 1786, - [SMALL_STATE(112)] = 1796, - [SMALL_STATE(113)] = 1806, - [SMALL_STATE(114)] = 1816, - [SMALL_STATE(115)] = 1830, - [SMALL_STATE(116)] = 1841, - [SMALL_STATE(117)] = 1850, - [SMALL_STATE(118)] = 1863, - [SMALL_STATE(119)] = 1876, - [SMALL_STATE(120)] = 1889, - [SMALL_STATE(121)] = 1898, - [SMALL_STATE(122)] = 1911, - [SMALL_STATE(123)] = 1920, - [SMALL_STATE(124)] = 1933, - [SMALL_STATE(125)] = 1946, - [SMALL_STATE(126)] = 1955, - [SMALL_STATE(127)] = 1968, - [SMALL_STATE(128)] = 1981, - [SMALL_STATE(129)] = 1990, - [SMALL_STATE(130)] = 2003, - [SMALL_STATE(131)] = 2016, - [SMALL_STATE(132)] = 2029, - [SMALL_STATE(133)] = 2042, - [SMALL_STATE(134)] = 2055, - [SMALL_STATE(135)] = 2068, - [SMALL_STATE(136)] = 2081, - [SMALL_STATE(137)] = 2094, - [SMALL_STATE(138)] = 2107, - [SMALL_STATE(139)] = 2120, - [SMALL_STATE(140)] = 2133, - [SMALL_STATE(141)] = 2146, - [SMALL_STATE(142)] = 2157, - [SMALL_STATE(143)] = 2170, - [SMALL_STATE(144)] = 2179, - [SMALL_STATE(145)] = 2192, - [SMALL_STATE(146)] = 2205, - [SMALL_STATE(147)] = 2214, - [SMALL_STATE(148)] = 2222, - [SMALL_STATE(149)] = 2232, - [SMALL_STATE(150)] = 2242, - [SMALL_STATE(151)] = 2252, - [SMALL_STATE(152)] = 2260, - [SMALL_STATE(153)] = 2268, - [SMALL_STATE(154)] = 2276, - [SMALL_STATE(155)] = 2286, - [SMALL_STATE(156)] = 2296, - [SMALL_STATE(157)] = 2304, - [SMALL_STATE(158)] = 2314, - [SMALL_STATE(159)] = 2324, - [SMALL_STATE(160)] = 2332, - [SMALL_STATE(161)] = 2342, - [SMALL_STATE(162)] = 2350, - [SMALL_STATE(163)] = 2360, - [SMALL_STATE(164)] = 2368, - [SMALL_STATE(165)] = 2376, - [SMALL_STATE(166)] = 2386, - [SMALL_STATE(167)] = 2394, - [SMALL_STATE(168)] = 2404, - [SMALL_STATE(169)] = 2414, - [SMALL_STATE(170)] = 2424, - [SMALL_STATE(171)] = 2434, - [SMALL_STATE(172)] = 2444, - [SMALL_STATE(173)] = 2454, - [SMALL_STATE(174)] = 2462, - [SMALL_STATE(175)] = 2469, - [SMALL_STATE(176)] = 2476, - [SMALL_STATE(177)] = 2483, - [SMALL_STATE(178)] = 2490, - [SMALL_STATE(179)] = 2497, - [SMALL_STATE(180)] = 2504, - [SMALL_STATE(181)] = 2511, - [SMALL_STATE(182)] = 2518, - [SMALL_STATE(183)] = 2525, - [SMALL_STATE(184)] = 2532, - [SMALL_STATE(185)] = 2539, - [SMALL_STATE(186)] = 2546, - [SMALL_STATE(187)] = 2553, + [SMALL_STATE(3)] = 31, + [SMALL_STATE(4)] = 52, + [SMALL_STATE(5)] = 77, + [SMALL_STATE(6)] = 102, + [SMALL_STATE(7)] = 123, + [SMALL_STATE(8)] = 156, + [SMALL_STATE(9)] = 177, + [SMALL_STATE(10)] = 198, + [SMALL_STATE(11)] = 219, + [SMALL_STATE(12)] = 252, + [SMALL_STATE(13)] = 272, + [SMALL_STATE(14)] = 292, + [SMALL_STATE(15)] = 312, + [SMALL_STATE(16)] = 332, + [SMALL_STATE(17)] = 351, + [SMALL_STATE(18)] = 370, + [SMALL_STATE(19)] = 389, + [SMALL_STATE(20)] = 408, + [SMALL_STATE(21)] = 427, + [SMALL_STATE(22)] = 446, + [SMALL_STATE(23)] = 476, + [SMALL_STATE(24)] = 506, + [SMALL_STATE(25)] = 536, + [SMALL_STATE(26)] = 566, + [SMALL_STATE(27)] = 596, + [SMALL_STATE(28)] = 626, + [SMALL_STATE(29)] = 656, + [SMALL_STATE(30)] = 686, + [SMALL_STATE(31)] = 716, + [SMALL_STATE(32)] = 746, + [SMALL_STATE(33)] = 776, + [SMALL_STATE(34)] = 803, + [SMALL_STATE(35)] = 830, + [SMALL_STATE(36)] = 857, + [SMALL_STATE(37)] = 884, + [SMALL_STATE(38)] = 911, + [SMALL_STATE(39)] = 938, + [SMALL_STATE(40)] = 965, + [SMALL_STATE(41)] = 997, + [SMALL_STATE(42)] = 1029, + [SMALL_STATE(43)] = 1049, + [SMALL_STATE(44)] = 1073, + [SMALL_STATE(45)] = 1097, + [SMALL_STATE(46)] = 1129, + [SMALL_STATE(47)] = 1149, + [SMALL_STATE(48)] = 1181, + [SMALL_STATE(49)] = 1201, + [SMALL_STATE(50)] = 1225, + [SMALL_STATE(51)] = 1248, + [SMALL_STATE(52)] = 1263, + [SMALL_STATE(53)] = 1286, + [SMALL_STATE(54)] = 1309, + [SMALL_STATE(55)] = 1324, + [SMALL_STATE(56)] = 1342, + [SMALL_STATE(57)] = 1356, + [SMALL_STATE(58)] = 1374, + [SMALL_STATE(59)] = 1388, + [SMALL_STATE(60)] = 1416, + [SMALL_STATE(61)] = 1444, + [SMALL_STATE(62)] = 1466, + [SMALL_STATE(63)] = 1480, + [SMALL_STATE(64)] = 1506, + [SMALL_STATE(65)] = 1534, + [SMALL_STATE(66)] = 1552, + [SMALL_STATE(67)] = 1570, + [SMALL_STATE(68)] = 1598, + [SMALL_STATE(69)] = 1616, + [SMALL_STATE(70)] = 1630, + [SMALL_STATE(71)] = 1658, + [SMALL_STATE(72)] = 1672, + [SMALL_STATE(73)] = 1698, + [SMALL_STATE(74)] = 1716, + [SMALL_STATE(75)] = 1734, + [SMALL_STATE(76)] = 1762, + [SMALL_STATE(77)] = 1780, + [SMALL_STATE(78)] = 1794, + [SMALL_STATE(79)] = 1820, + [SMALL_STATE(80)] = 1846, + [SMALL_STATE(81)] = 1863, + [SMALL_STATE(82)] = 1876, + [SMALL_STATE(83)] = 1895, + [SMALL_STATE(84)] = 1908, + [SMALL_STATE(85)] = 1927, + [SMALL_STATE(86)] = 1946, + [SMALL_STATE(87)] = 1959, + [SMALL_STATE(88)] = 1972, + [SMALL_STATE(89)] = 1985, + [SMALL_STATE(90)] = 1997, + [SMALL_STATE(91)] = 2009, + [SMALL_STATE(92)] = 2029, + [SMALL_STATE(93)] = 2047, + [SMALL_STATE(94)] = 2067, + [SMALL_STATE(95)] = 2079, + [SMALL_STATE(96)] = 2091, + [SMALL_STATE(97)] = 2111, + [SMALL_STATE(98)] = 2131, + [SMALL_STATE(99)] = 2143, + [SMALL_STATE(100)] = 2155, + [SMALL_STATE(101)] = 2167, + [SMALL_STATE(102)] = 2189, + [SMALL_STATE(103)] = 2201, + [SMALL_STATE(104)] = 2213, + [SMALL_STATE(105)] = 2235, + [SMALL_STATE(106)] = 2247, + [SMALL_STATE(107)] = 2259, + [SMALL_STATE(108)] = 2279, + [SMALL_STATE(109)] = 2291, + [SMALL_STATE(110)] = 2303, + [SMALL_STATE(111)] = 2315, + [SMALL_STATE(112)] = 2335, + [SMALL_STATE(113)] = 2355, + [SMALL_STATE(114)] = 2367, + [SMALL_STATE(115)] = 2379, + [SMALL_STATE(116)] = 2401, + [SMALL_STATE(117)] = 2413, + [SMALL_STATE(118)] = 2435, + [SMALL_STATE(119)] = 2447, + [SMALL_STATE(120)] = 2459, + [SMALL_STATE(121)] = 2471, + [SMALL_STATE(122)] = 2483, + [SMALL_STATE(123)] = 2495, + [SMALL_STATE(124)] = 2507, + [SMALL_STATE(125)] = 2519, + [SMALL_STATE(126)] = 2531, + [SMALL_STATE(127)] = 2549, + [SMALL_STATE(128)] = 2565, + [SMALL_STATE(129)] = 2577, + [SMALL_STATE(130)] = 2589, + [SMALL_STATE(131)] = 2601, + [SMALL_STATE(132)] = 2623, + [SMALL_STATE(133)] = 2643, + [SMALL_STATE(134)] = 2655, + [SMALL_STATE(135)] = 2667, + [SMALL_STATE(136)] = 2679, + [SMALL_STATE(137)] = 2691, + [SMALL_STATE(138)] = 2703, + [SMALL_STATE(139)] = 2725, + [SMALL_STATE(140)] = 2737, + [SMALL_STATE(141)] = 2749, + [SMALL_STATE(142)] = 2761, + [SMALL_STATE(143)] = 2773, + [SMALL_STATE(144)] = 2785, + [SMALL_STATE(145)] = 2797, + [SMALL_STATE(146)] = 2809, + [SMALL_STATE(147)] = 2821, + [SMALL_STATE(148)] = 2837, + [SMALL_STATE(149)] = 2859, + [SMALL_STATE(150)] = 2881, + [SMALL_STATE(151)] = 2893, + [SMALL_STATE(152)] = 2905, + [SMALL_STATE(153)] = 2917, + [SMALL_STATE(154)] = 2929, + [SMALL_STATE(155)] = 2941, + [SMALL_STATE(156)] = 2953, + [SMALL_STATE(157)] = 2965, + [SMALL_STATE(158)] = 2977, + [SMALL_STATE(159)] = 2989, + [SMALL_STATE(160)] = 3001, + [SMALL_STATE(161)] = 3013, + [SMALL_STATE(162)] = 3025, + [SMALL_STATE(163)] = 3037, + [SMALL_STATE(164)] = 3049, + [SMALL_STATE(165)] = 3061, + [SMALL_STATE(166)] = 3073, + [SMALL_STATE(167)] = 3085, + [SMALL_STATE(168)] = 3103, + [SMALL_STATE(169)] = 3115, + [SMALL_STATE(170)] = 3133, + [SMALL_STATE(171)] = 3152, + [SMALL_STATE(172)] = 3167, + [SMALL_STATE(173)] = 3186, + [SMALL_STATE(174)] = 3201, + [SMALL_STATE(175)] = 3218, + [SMALL_STATE(176)] = 3237, + [SMALL_STATE(177)] = 3252, + [SMALL_STATE(178)] = 3267, + [SMALL_STATE(179)] = 3277, + [SMALL_STATE(180)] = 3291, + [SMALL_STATE(181)] = 3307, + [SMALL_STATE(182)] = 3323, + [SMALL_STATE(183)] = 3333, + [SMALL_STATE(184)] = 3349, + [SMALL_STATE(185)] = 3363, + [SMALL_STATE(186)] = 3377, + [SMALL_STATE(187)] = 3387, + [SMALL_STATE(188)] = 3397, + [SMALL_STATE(189)] = 3411, + [SMALL_STATE(190)] = 3421, + [SMALL_STATE(191)] = 3431, + [SMALL_STATE(192)] = 3441, + [SMALL_STATE(193)] = 3451, + [SMALL_STATE(194)] = 3465, + [SMALL_STATE(195)] = 3479, + [SMALL_STATE(196)] = 3489, + [SMALL_STATE(197)] = 3503, + [SMALL_STATE(198)] = 3517, + [SMALL_STATE(199)] = 3531, + [SMALL_STATE(200)] = 3545, + [SMALL_STATE(201)] = 3559, + [SMALL_STATE(202)] = 3569, + [SMALL_STATE(203)] = 3583, + [SMALL_STATE(204)] = 3599, + [SMALL_STATE(205)] = 3613, + [SMALL_STATE(206)] = 3627, + [SMALL_STATE(207)] = 3641, + [SMALL_STATE(208)] = 3655, + [SMALL_STATE(209)] = 3669, + [SMALL_STATE(210)] = 3679, + [SMALL_STATE(211)] = 3693, + [SMALL_STATE(212)] = 3709, + [SMALL_STATE(213)] = 3723, + [SMALL_STATE(214)] = 3733, + [SMALL_STATE(215)] = 3743, + [SMALL_STATE(216)] = 3753, + [SMALL_STATE(217)] = 3767, + [SMALL_STATE(218)] = 3777, + [SMALL_STATE(219)] = 3787, + [SMALL_STATE(220)] = 3797, + [SMALL_STATE(221)] = 3807, + [SMALL_STATE(222)] = 3817, + [SMALL_STATE(223)] = 3827, + [SMALL_STATE(224)] = 3843, + [SMALL_STATE(225)] = 3853, + [SMALL_STATE(226)] = 3869, + [SMALL_STATE(227)] = 3879, + [SMALL_STATE(228)] = 3895, + [SMALL_STATE(229)] = 3909, + [SMALL_STATE(230)] = 3925, + [SMALL_STATE(231)] = 3935, + [SMALL_STATE(232)] = 3951, + [SMALL_STATE(233)] = 3961, + [SMALL_STATE(234)] = 3971, + [SMALL_STATE(235)] = 3981, + [SMALL_STATE(236)] = 3991, + [SMALL_STATE(237)] = 4001, + [SMALL_STATE(238)] = 4017, + [SMALL_STATE(239)] = 4027, + [SMALL_STATE(240)] = 4043, + [SMALL_STATE(241)] = 4053, + [SMALL_STATE(242)] = 4063, + [SMALL_STATE(243)] = 4079, + [SMALL_STATE(244)] = 4095, + [SMALL_STATE(245)] = 4105, + [SMALL_STATE(246)] = 4115, + [SMALL_STATE(247)] = 4125, + [SMALL_STATE(248)] = 4135, + [SMALL_STATE(249)] = 4145, + [SMALL_STATE(250)] = 4159, + [SMALL_STATE(251)] = 4175, + [SMALL_STATE(252)] = 4189, + [SMALL_STATE(253)] = 4199, + [SMALL_STATE(254)] = 4213, + [SMALL_STATE(255)] = 4229, + [SMALL_STATE(256)] = 4245, + [SMALL_STATE(257)] = 4255, + [SMALL_STATE(258)] = 4269, + [SMALL_STATE(259)] = 4283, + [SMALL_STATE(260)] = 4297, + [SMALL_STATE(261)] = 4307, + [SMALL_STATE(262)] = 4323, + [SMALL_STATE(263)] = 4337, + [SMALL_STATE(264)] = 4353, + [SMALL_STATE(265)] = 4363, + [SMALL_STATE(266)] = 4377, + [SMALL_STATE(267)] = 4391, + [SMALL_STATE(268)] = 4405, + [SMALL_STATE(269)] = 4419, + [SMALL_STATE(270)] = 4435, + [SMALL_STATE(271)] = 4449, + [SMALL_STATE(272)] = 4459, + [SMALL_STATE(273)] = 4469, + [SMALL_STATE(274)] = 4479, + [SMALL_STATE(275)] = 4495, + [SMALL_STATE(276)] = 4505, + [SMALL_STATE(277)] = 4518, + [SMALL_STATE(278)] = 4531, + [SMALL_STATE(279)] = 4544, + [SMALL_STATE(280)] = 4557, + [SMALL_STATE(281)] = 4570, + [SMALL_STATE(282)] = 4583, + [SMALL_STATE(283)] = 4594, + [SMALL_STATE(284)] = 4607, + [SMALL_STATE(285)] = 4620, + [SMALL_STATE(286)] = 4633, + [SMALL_STATE(287)] = 4642, + [SMALL_STATE(288)] = 4655, + [SMALL_STATE(289)] = 4668, + [SMALL_STATE(290)] = 4681, + [SMALL_STATE(291)] = 4694, + [SMALL_STATE(292)] = 4707, + [SMALL_STATE(293)] = 4720, + [SMALL_STATE(294)] = 4733, + [SMALL_STATE(295)] = 4746, + [SMALL_STATE(296)] = 4759, + [SMALL_STATE(297)] = 4772, + [SMALL_STATE(298)] = 4785, + [SMALL_STATE(299)] = 4798, + [SMALL_STATE(300)] = 4811, + [SMALL_STATE(301)] = 4824, + [SMALL_STATE(302)] = 4837, + [SMALL_STATE(303)] = 4850, + [SMALL_STATE(304)] = 4863, + [SMALL_STATE(305)] = 4876, + [SMALL_STATE(306)] = 4889, + [SMALL_STATE(307)] = 4902, + [SMALL_STATE(308)] = 4913, + [SMALL_STATE(309)] = 4924, + [SMALL_STATE(310)] = 4937, + [SMALL_STATE(311)] = 4950, + [SMALL_STATE(312)] = 4963, + [SMALL_STATE(313)] = 4976, + [SMALL_STATE(314)] = 4989, + [SMALL_STATE(315)] = 4997, + [SMALL_STATE(316)] = 5005, + [SMALL_STATE(317)] = 5013, + [SMALL_STATE(318)] = 5023, + [SMALL_STATE(319)] = 5031, + [SMALL_STATE(320)] = 5039, + [SMALL_STATE(321)] = 5047, + [SMALL_STATE(322)] = 5057, + [SMALL_STATE(323)] = 5065, + [SMALL_STATE(324)] = 5073, + [SMALL_STATE(325)] = 5083, + [SMALL_STATE(326)] = 5093, + [SMALL_STATE(327)] = 5103, + [SMALL_STATE(328)] = 5111, + [SMALL_STATE(329)] = 5119, + [SMALL_STATE(330)] = 5129, + [SMALL_STATE(331)] = 5137, + [SMALL_STATE(332)] = 5147, + [SMALL_STATE(333)] = 5155, + [SMALL_STATE(334)] = 5165, + [SMALL_STATE(335)] = 5173, + [SMALL_STATE(336)] = 5183, + [SMALL_STATE(337)] = 5193, + [SMALL_STATE(338)] = 5201, + [SMALL_STATE(339)] = 5211, + [SMALL_STATE(340)] = 5221, + [SMALL_STATE(341)] = 5231, + [SMALL_STATE(342)] = 5241, + [SMALL_STATE(343)] = 5251, + [SMALL_STATE(344)] = 5261, + [SMALL_STATE(345)] = 5271, + [SMALL_STATE(346)] = 5281, + [SMALL_STATE(347)] = 5291, + [SMALL_STATE(348)] = 5301, + [SMALL_STATE(349)] = 5311, + [SMALL_STATE(350)] = 5321, + [SMALL_STATE(351)] = 5331, + [SMALL_STATE(352)] = 5339, + [SMALL_STATE(353)] = 5349, + [SMALL_STATE(354)] = 5357, + [SMALL_STATE(355)] = 5365, + [SMALL_STATE(356)] = 5375, + [SMALL_STATE(357)] = 5383, + [SMALL_STATE(358)] = 5391, + [SMALL_STATE(359)] = 5401, + [SMALL_STATE(360)] = 5411, + [SMALL_STATE(361)] = 5419, + [SMALL_STATE(362)] = 5427, + [SMALL_STATE(363)] = 5435, + [SMALL_STATE(364)] = 5445, + [SMALL_STATE(365)] = 5453, + [SMALL_STATE(366)] = 5461, + [SMALL_STATE(367)] = 5471, + [SMALL_STATE(368)] = 5479, + [SMALL_STATE(369)] = 5487, + [SMALL_STATE(370)] = 5495, + [SMALL_STATE(371)] = 5503, + [SMALL_STATE(372)] = 5511, + [SMALL_STATE(373)] = 5521, + [SMALL_STATE(374)] = 5529, + [SMALL_STATE(375)] = 5537, + [SMALL_STATE(376)] = 5547, + [SMALL_STATE(377)] = 5557, + [SMALL_STATE(378)] = 5565, + [SMALL_STATE(379)] = 5575, + [SMALL_STATE(380)] = 5583, + [SMALL_STATE(381)] = 5593, + [SMALL_STATE(382)] = 5603, + [SMALL_STATE(383)] = 5613, + [SMALL_STATE(384)] = 5623, + [SMALL_STATE(385)] = 5631, + [SMALL_STATE(386)] = 5641, + [SMALL_STATE(387)] = 5649, + [SMALL_STATE(388)] = 5659, + [SMALL_STATE(389)] = 5669, + [SMALL_STATE(390)] = 5677, + [SMALL_STATE(391)] = 5685, + [SMALL_STATE(392)] = 5695, + [SMALL_STATE(393)] = 5705, + [SMALL_STATE(394)] = 5715, + [SMALL_STATE(395)] = 5723, + [SMALL_STATE(396)] = 5733, + [SMALL_STATE(397)] = 5741, + [SMALL_STATE(398)] = 5749, + [SMALL_STATE(399)] = 5757, + [SMALL_STATE(400)] = 5765, + [SMALL_STATE(401)] = 5775, + [SMALL_STATE(402)] = 5782, + [SMALL_STATE(403)] = 5789, + [SMALL_STATE(404)] = 5796, + [SMALL_STATE(405)] = 5803, + [SMALL_STATE(406)] = 5810, + [SMALL_STATE(407)] = 5817, + [SMALL_STATE(408)] = 5824, + [SMALL_STATE(409)] = 5831, + [SMALL_STATE(410)] = 5838, + [SMALL_STATE(411)] = 5845, + [SMALL_STATE(412)] = 5852, + [SMALL_STATE(413)] = 5859, + [SMALL_STATE(414)] = 5866, + [SMALL_STATE(415)] = 5873, + [SMALL_STATE(416)] = 5880, + [SMALL_STATE(417)] = 5887, + [SMALL_STATE(418)] = 5894, + [SMALL_STATE(419)] = 5901, + [SMALL_STATE(420)] = 5908, + [SMALL_STATE(421)] = 5915, + [SMALL_STATE(422)] = 5922, + [SMALL_STATE(423)] = 5929, + [SMALL_STATE(424)] = 5936, + [SMALL_STATE(425)] = 5943, + [SMALL_STATE(426)] = 5950, + [SMALL_STATE(427)] = 5957, + [SMALL_STATE(428)] = 5964, }; static const TSParseActionEntry ts_parse_actions[] = { @@ -3584,207 +7678,426 @@ static const TSParseActionEntry ts_parse_actions[] = { [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), - [13] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 1), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 1), [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 2, .production_id = 27), - [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), - [45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type, 1, .production_id = 12), - [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), - [51] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(150), - [54] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(119), - [57] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(186), - [60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 10), - [62] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), - [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 3, .production_id = 4), - [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 4), - [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_type, 2, .production_id = 29), - [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 4), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 5), - [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 2), - [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 5), - [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 3), - [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 3), - [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 2), - [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_path_repeat1, 2), - [88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_path_repeat1, 2), SHIFT_REPEAT(178), - [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mut_type, 2, .production_id = 28), - [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ref_type, 2, .production_id = 28), - [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_path, 2), - [97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), - [99] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_uni_type, 2, .production_id = 28), - [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 2, .production_id = 1), - [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 20), - [109] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_path, 1), - [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 3, .production_id = 43), - [113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 2, .production_id = 26), - [115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 7), - [117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__returns, 2), - [119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), - [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), - [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter_requirements, 1), - [125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143), - [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 3), - [131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tags, 2), - [133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), - [135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 3, .production_id = 2), - [137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tags_repeat1, 2), - [139] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tags_repeat1, 2), SHIFT_REPEAT(174), - [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 21), - [144] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), - [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), - [152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tags, 3), - [154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 17), - [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 7), - [158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 6), - [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 36), - [162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 8), - [166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 5), - [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 2), - [170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 4), - [172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 2), - [174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), - [176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), - [178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), - [180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 5), - [182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_parameter_requirement, 1, .production_id = 12), - [184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), - [186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 4), - [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 3), - [190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tags, 1), - [192] = {.entry = {.count = 1, .reusable = false}}, SHIFT(47), - [194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tags, 1), - [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 7, .production_id = 46), - [198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameter_requirements_repeat1, 2), - [200] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameter_requirements_repeat1, 2), SHIFT_REPEAT(69), - [203] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_arguments_repeat1, 2), SHIFT_REPEAT(9), - [206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_arguments_repeat1, 2), - [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 3, .production_id = 3), - [210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter_requirements, 3), - [212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), - [214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 3, .production_id = 5), - [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 18), - [218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 19), - [220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 22), - [222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_body, 2), - [224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 23), - [226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 24), - [228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 7, .production_id = 45), - [230] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 25), - [232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 3, .production_id = 5), - [234] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 44), - [236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter_requirements, 2), - [238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 4, .production_id = 6), - [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 16), - [242] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), - [244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 15), - [248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 14), - [250] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 9), - [252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), - [254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 41), - [256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 40), - [258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 39), - [260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 38), - [262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 37), - [264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 31), - [266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 35), - [268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 32), - [270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 33), - [272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 11), - [274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 1, .production_id = 13), - [276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__symbol, 1), - [280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), - [282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 2), - [284] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_symbols_repeat1, 2), SHIFT_REPEAT(65), - [287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_symbols_repeat1, 2), - [289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), - [291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), - [293] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), - [295] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), - [297] = {.entry = {.count = 1, .reusable = false}}, SHIFT(154), - [299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [301] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), - [303] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), - [305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 5), - [307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), - [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), - [313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), - [315] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3), - [317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), - [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), - [331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), - [333] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_arguments_repeat1, 2), SHIFT_REPEAT(148), - [336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_extern_arguments_repeat1, 2), - [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), - [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [344] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2), SHIFT_REPEAT(170), - [347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2), - [349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), - [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [355] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mutable_requirement, 1), - [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), - [363] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4), - [365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument, 3, .production_id = 42), - [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 3), - [371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 2), - [373] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43), - [375] = {.entry = {.count = 1, .reusable = false}}, SHIFT(176), - [377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), - [379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_rest_argument, 1), - [381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 5), - [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), - [385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 4), - [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(182), - [389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 2, .production_id = 30), - [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [395] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_as, 3, .production_id = 34), - [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), - [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [413] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), - [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [23] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 2), + [25] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type, 1, .production_id = 13), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [29] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 2, .production_id = 30), + [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic_type, 2, .production_id = 6), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 3), + [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 4), + [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 5), + [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [43] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(342), + [46] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(304), + [49] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(92), + [52] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(378), + [55] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(376), + [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 3), + [60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 5), + [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 2), + [64] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type_arguments, 4), + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mut_type, 2, .production_id = 31), + [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 3, .production_id = 52), + [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__returns, 2), + [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_type, 2, .production_id = 29), + [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ref_type, 2, .production_id = 31), + [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_uni_type, 2, .production_id = 31), + [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 11), + [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [82] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), + [84] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), + [86] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [92] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 3, .production_id = 4), + [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), + [116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 3, .production_id = 57), + [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 69), + [122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_path, 2), + [124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), + [126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 23), + [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 8), + [130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 3, .production_id = 60), + [132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_path_repeat1, 2), + [134] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_path_repeat1, 2), SHIFT_REPEAT(422), + [137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 2, .production_id = 37), + [139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_path, 1), + [141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 2, .production_id = 1), + [143] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), + [153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(424), + [155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), + [157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [159] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_class_body_repeat1, 2), SHIFT_REPEAT(61), + [162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_class_body_repeat1, 2), + [164] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_class_body_repeat1, 2), SHIFT_REPEAT(421), + [167] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_class_body_repeat1, 2), SHIFT_REPEAT(424), + [170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 9), + [172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 4), + [174] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 45), + [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 7), + [178] = {.entry = {.count = 1, .reusable = false}}, SHIFT(59), + [180] = {.entry = {.count = 1, .reusable = false}}, SHIFT(420), + [182] = {.entry = {.count = 1, .reusable = false}}, SHIFT(85), + [184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(420), + [186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 3), + [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 68), + [190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tags, 2), + [192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), + [194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tags, 3), + [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tags_repeat1, 2), + [198] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tags_repeat1, 2), SHIFT_REPEAT(408), + [201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 5), + [203] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 6), + [205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 75), + [207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 3, .production_id = 2), + [209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 24), + [211] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 20), + [213] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern_arguments, 2), + [215] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 83), + [217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 3, .production_id = 59), + [219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tags, 1), + [221] = {.entry = {.count = 1, .reusable = false}}, SHIFT(65), + [223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tags, 1), + [225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bound_requirements, 1), + [227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), + [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 5), + [233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter_requirements, 1), + [235] = {.entry = {.count = 1, .reusable = false}}, SHIFT(60), + [237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 2), + [239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 4), + [241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_symbols, 3), + [243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implement_trait_body, 3), + [245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 22), + [247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 95), + [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), + [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 86), + [257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 15), + [259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 16), + [261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 81), + [263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 79), + [265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 17), + [267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 2), + [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 4, .production_id = 12), + [271] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_body, 2), + [273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 4, .production_id = 17), + [275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [279] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 4, .production_id = 18), + [281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 4, .production_id = 12), + [283] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 73), + [285] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 5, .production_id = 39), + [287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 3, .production_id = 5), + [289] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 5, .production_id = 28), + [291] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 71), + [293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 66), + [295] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 5, .production_id = 38), + [297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_body, 2), + [299] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 4, .production_id = 17), + [301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 4, .production_id = 19), + [303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 5), + [305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reopen_class_body, 2), + [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 44), + [309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 3, .production_id = 3), + [311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 7, .production_id = 64), + [313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 7, .production_id = 63), + [315] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_body, 3), + [317] = {.entry = {.count = 1, .reusable = false}}, SHIFT(308), + [319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), + [323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case, 2, .production_id = 37), + [327] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implement_trait, 6, .production_id = 62), + [329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implement_trait, 6, .production_id = 61), + [331] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implement_trait_body, 2), + [333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 3, .production_id = 55), + [335] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 21), + [337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 49), + [339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 3, .production_id = 5), + [341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 6, .production_id = 56), + [343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 5, .production_id = 25), + [345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 26), + [347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 27), + [349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 3, .production_id = 5), + [351] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 6, .production_id = 54), + [353] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 28), + [355] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 4, .production_id = 12), + [357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 53), + [359] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4), + [361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_parameter_requirement, 1, .production_id = 13), + [363] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implement_trait, 5, .production_id = 41), + [365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 4, .production_id = 10), + [367] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 46), + [369] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 4, .production_id = 7), + [371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implement_trait, 5, .production_id = 42), + [373] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reopen_class, 3, .production_id = 5), + [375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_external_function, 6, .production_id = 47), + [377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3), + [379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_body, 3), + [381] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 33), + [383] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 48), + [385] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 34), + [387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 5, .production_id = 35), + [389] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 5, .production_id = 28), + [391] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait, 5, .production_id = 40), + [393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class, 5, .production_id = 36), + [395] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reopen_class_body, 3), + [397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [399] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_method, 6, .production_id = 50), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [411] = {.entry = {.count = 1, .reusable = false}}, SHIFT(47), + [413] = {.entry = {.count = 1, .reusable = false}}, SHIFT(414), + [415] = {.entry = {.count = 1, .reusable = false}}, SHIFT(196), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(411), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), + [423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameter_requirements_repeat1, 2), + [425] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameter_requirements_repeat1, 2), SHIFT_REPEAT(173), + [428] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 35), + [430] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bound_requirements, 2), + [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), + [436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [438] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 8, .production_id = 103), + [442] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 74), + [444] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 7, .production_id = 102), + [446] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_arguments, 5), + [448] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 7, .production_id = 101), + [450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__required_trait, 1, .production_id = 13), + [452] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 7, .production_id = 100), + [454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 7, .production_id = 99), + [456] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 7, .production_id = 98), + [458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 7, .production_id = 64), + [460] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 72), + [462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 70), + [464] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 26), + [466] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), + [468] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bound_requirements, 3), + [470] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_trait_body_repeat1, 2), SHIFT_REPEAT(174), + [473] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_trait_body_repeat1, 2), + [475] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 97), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [479] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 27), + [481] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_implement_trait_body_repeat1, 2), SHIFT_REPEAT(61), + [484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_implement_trait_body_repeat1, 2), + [486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 96), + [490] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 67), + [492] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 94), + [494] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 93), + [496] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_arguments, 4), + [498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 92), + [506] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 91), + [508] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_arguments, 2), + [510] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_required_traits, 1), + [512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [514] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 90), + [516] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 53), + [518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 4), + [520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 54), + [522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field, 4, .production_id = 65), + [524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 4, .production_id = 18), + [526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 28), + [532] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mutable_requirement, 1), + [534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter_requirements, 2), + [536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 89), + [538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 4, .production_id = 17), + [540] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 3), + [542] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 36), + [544] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 88), + [546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 50), + [548] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 49), + [550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 3, .production_id = 5), + [552] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 6, .production_id = 48), + [554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case, 3, .production_id = 55), + [556] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 4, .production_id = 16), + [558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 4, .production_id = 15), + [560] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 2), + [562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 87), + [564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 3, .production_id = 58), + [566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 33), + [568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 85), + [570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 34), + [572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 84), + [574] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_case_arguments_repeat1, 2), SHIFT_REPEAT(37), + [577] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_case_arguments_repeat1, 2), + [579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 82), + [581] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 4, .production_id = 12), + [583] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [585] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 76), + [587] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), + [589] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 80), + [591] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 78), + [593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter_requirements, 3), + [595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 1, .production_id = 14), + [597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [599] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_case_arguments, 3), + [601] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 38), + [603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_method_arguments, 5), + [605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_method, 5, .production_id = 77), + [607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), + [609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), + [619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), + [623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [625] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__symbol, 1), + [627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [629] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), + [631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [635] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_arguments_repeat1, 2), SHIFT_REPEAT(348), + [638] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_extern_arguments_repeat1, 2), + [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [644] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_required_traits_repeat1, 2), SHIFT_REPEAT(307), + [647] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_required_traits_repeat1, 2), + [649] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bounds, 4), + [651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), + [653] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bounds_repeat1, 2), SHIFT_REPEAT(350), + [656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_bounds_repeat1, 2), + [658] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2), SHIFT_REPEAT(345), + [661] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2), + [663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [671] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bounds, 2), + [673] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), + [675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [679] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), + [681] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_symbols_repeat1, 2), SHIFT_REPEAT(171), + [684] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_symbols_repeat1, 2), + [686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [690] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bounds, 1), + [692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [694] = {.entry = {.count = 1, .reusable = false}}, SHIFT(64), + [696] = {.entry = {.count = 1, .reusable = false}}, SHIFT(415), + [698] = {.entry = {.count = 1, .reusable = false}}, SHIFT(326), + [700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_required_traits, 3), + [704] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_required_traits, 2), + [706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), + [708] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), + [712] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bounds, 3), + [714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [720] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 34), + [722] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 50), + [724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 8, .production_id = 103), + [726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bound, 2, .production_id = 32), + [728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 15), + [730] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 16), + [732] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 7, .production_id = 101), + [734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 7, .production_id = 100), + [736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), + [738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [740] = {.entry = {.count = 1, .reusable = false}}, SHIFT(70), + [742] = {.entry = {.count = 1, .reusable = false}}, SHIFT(416), + [744] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 18), + [746] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 7, .production_id = 99), + [748] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 2, .production_id = 32), + [750] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 12), + [752] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 7, .production_id = 98), + [754] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 7, .production_id = 64), + [756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [758] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 92), + [760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(425), + [762] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 26), + [764] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 27), + [766] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 91), + [768] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 28), + [770] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 90), + [772] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 36), + [774] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 33), + [776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 53), + [780] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 35), + [782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 76), + [784] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 77), + [786] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 3, .production_id = 5), + [788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 54), + [790] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 5, .production_id = 38), + [792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), + [794] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import_as, 3, .production_id = 43), + [796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), + [798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [800] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 89), + [802] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 88), + [804] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument, 3, .production_id = 51), + [806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), + [808] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_rest_argument, 1), + [810] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 48), + [812] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 6, .production_id = 49), + [814] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trait_method, 4, .production_id = 17), + [816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [828] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [838] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__trait_method_modifier, 1), + [840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), + [846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [850] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__method_modifier, 1), + [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), + [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(417), + [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [860] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__class_modifier, 1), + [862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), + [864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), }; #ifdef __cplusplus diff --git a/test/corpus/classes.txt b/test/corpus/classes.txt index 8b7c882..39140b7 100644 --- a/test/corpus/classes.txt +++ b/test/corpus/classes.txt @@ -3,8 +3,132 @@ Classes === class A {} +class pub A {} +class async A {} +class builtin A {} +class enum A {} +class pub async A {} +class A[A] {} +class A[A: B + C + mut + D[A], C] {} +class A { + # test +} ---- (source_file - (class name: (constant) body: (class_body))) + (class name: (constant) body: (class_body)) + (class visibility: (visibility) name: (constant) body: (class_body)) + (class modifier: (modifier) name: (constant) body: (class_body)) + (class modifier: (modifier) name: (constant) body: (class_body)) + (class modifier: (modifier) name: (constant) body: (class_body)) + (class + visibility: (visibility) + modifier: (modifier) + name: (constant) + body: (class_body)) + (class + name: (constant) + type_parameters: (type_parameters (type_parameter name: (constant))) + body: (class_body)) + (class + name: (constant) + type_parameters: (type_parameters + (type_parameter + name: (constant) + requirements: (requirements + (type) + (type) + (mut) + (generic_type name: (constant) arguments: (type_arguments (type))))) + (type_parameter name: (constant))) + body: (class_body)) + (class name: (constant) body: (class_body (line_comment)))) + +=== +Classes with fields +=== + +class A { + let @a: A + let @b: B +} + +--- + +(source_file + (class + name: (constant) + body: (class_body + (field name: (field_name) type: (type)) + (field name: (field_name) type: (type))))) + +=== +Classes with methods +=== + +class A { + fn example {} + fn pub example {} + fn pub static example {} + fn pub async example {} + fn pub async mut example {} + fn pub move example {} + fn example[A: B + C + mut + D[A]] {} +} + +--- + +(source_file + (class + name: (constant) + body: (class_body + (method name: (identifier) body: (block)) + (method visibility: (visibility) name: (identifier) body: (block)) + (method + visibility: (visibility) + modifier: (modifier) + name: (identifier) + body: (block)) + (method + visibility: (visibility) + modifier: (modifier) + name: (identifier) + body: (block)) + (method + visibility: (visibility) + modifier: (modifier) + name: (identifier) + body: (block)) + (method + visibility: (visibility) + modifier: (modifier) + name: (identifier) + body: (block)) + (method + name: (identifier) + type_parameters: (type_parameters + (type_parameter + name: (constant) + requirements: (requirements + (type) + (type) + (mut) + (generic_type name: (constant) arguments: (type_arguments (type)))))) + body: (block))))) + +=== +Classes with cases +=== + +class A { + case A + case B(A, B,) +} + +--- + +(source_file + (class name: (constant) body: (class_body + (case name: (constant)) + (case name: (constant) arguments: (arguments (type) (type)))))) diff --git a/test/corpus/comments.txt b/test/corpus/comments.txt index 60a19d7..12f9156 100644 --- a/test/corpus/comments.txt +++ b/test/corpus/comments.txt @@ -7,4 +7,4 @@ Comments --- (source_file - (comment)) + (line_comment)) diff --git a/test/corpus/implementations.txt b/test/corpus/implementations.txt new file mode 100644 index 0000000..eb1a8c6 --- /dev/null +++ b/test/corpus/implementations.txt @@ -0,0 +1,42 @@ +=== +Implementations +=== + +impl A {} +impl A for B {} +impl A for B if A: B + mut, B: C {} +impl A { + fn example {} + fn mut example {} +} +impl A for B { + fn example {} + fn mut example {} +} + +--- + +(source_file + (reopen_class name: (constant) body: (reopen_class_body)) + (implement_trait + trait: (type) + class: (constant) + body: (implement_trait_body)) + (implement_trait + trait: (type) + class: (constant) + bounds: (bounds + (bound name: (constant) requirements: (requirements (type) (mut))) + (bound name: (constant) requirements: (requirements (type)))) + body: (implement_trait_body)) + (reopen_class + name: (constant) + body: (reopen_class_body + (method name: (identifier) body: (block)) + (method modifier: (modifier) name: (identifier) body: (block)))) + (implement_trait + trait: (type) + class: (constant) + body: (implement_trait_body + (method name: (identifier) body: (block)) + (method modifier: (modifier) name: (identifier) body: (block))))) diff --git a/test/corpus/methods.txt b/test/corpus/methods.txt index a05efa5..7648c30 100644 --- a/test/corpus/methods.txt +++ b/test/corpus/methods.txt @@ -138,7 +138,7 @@ fn pub example {} returns: (type) body: (block)) (module_method - visibility: (public) + visibility: (visibility) name: (identifier) body: (block))) @@ -157,7 +157,7 @@ fn extern example(a: A, ...,) (source_file (external_function name: (identifier)) - (external_function visibility: (public) name: (identifier)) + (external_function visibility: (visibility) name: (identifier)) (external_function name: (identifier) arguments: (arguments (argument name: (identifier) type: (type))) diff --git a/test/corpus/traits.txt b/test/corpus/traits.txt new file mode 100644 index 0000000..756988b --- /dev/null +++ b/test/corpus/traits.txt @@ -0,0 +1,82 @@ +=== +Traits +=== + +trait A {} +trait pub A {} +trait A[A] {} +trait A[A: B + C + mut + D[A], C] {} +trait A { + # test +} +trait A: B + C[A] {} + +--- + +(source_file + (trait name: (constant) body: (trait_body)) + (trait visibility: (visibility) name: (constant) body: (trait_body)) + (trait + name: (constant) + type_parameters: (type_parameters (type_parameter name: (constant))) + body: (trait_body)) + (trait + name: (constant) + type_parameters: (type_parameters + (type_parameter + name: (constant) + requirements: (requirements + (type) + (type) + (mut) + (generic_type name: (constant) arguments: (type_arguments (type))))) + (type_parameter name: (constant))) + body: (trait_body)) + (trait name: (constant) body: (trait_body (line_comment))) + (trait + name: (constant) + requirements: (required_traits + (type) + (generic_type name: (constant) arguments: (type_arguments (type)))) + body: (trait_body))) + +=== +Trait methods +=== + +trait A { + fn example + fn example {} + fn pub example {} + fn pub move example {} + fn example[A: B + C + mut + D[A]] {} +} + +--- + +(source_file + (trait + name: (constant) + body: (trait_body + (method name: (identifier)) + (method name: (identifier) body: (block)) + (method + visibility: (visibility) + name: (identifier) + body: (block)) + (method + visibility: (visibility) + modifier: (modifier) + name: (identifier) + body: (block)) + (method + name: (identifier) + type_parameters: (type_parameters + (type_parameter + name: (constant) + requirements: (requirements + (type) + (type) + (mut) + (generic_type name: (constant) arguments: (type_arguments (type)))))) + body: (block)))))