diff --git a/unified/extractor/tree-sitter-swift/grammar.js b/unified/extractor/tree-sitter-swift/grammar.js index bfe4c9f6ddd..51a680e05a1 100644 --- a/unified/extractor/tree-sitter-swift/grammar.js +++ b/unified/extractor/tree-sitter-swift/grammar.js @@ -401,13 +401,13 @@ module.exports = grammar({ type_annotation: ($) => seq(":", field("type", $._possibly_implicitly_unwrapped_type)), _possibly_implicitly_unwrapped_type: ($) => - choice($._type, $.implicitly_unwrapped_type), + choice($.type, $.implicitly_unwrapped_type), implicitly_unwrapped_type: ($) => - seq($._type, token.immediate("!")), - _type: ($) => + seq($.type, token.immediate("!")), + type: ($) => prec.right( PRECS.ty, - seq(optional($.type_modifiers), field("name", $.unannotated_type)) + seq(field("modifiers", optional($.type_modifiers)), field("name", $.unannotated_type)) ), unannotated_type: ($) => prec.right( @@ -453,7 +453,7 @@ module.exports = grammar({ seq( optional($._tuple_type_item_identifier), optional($.parameter_modifiers), - field("type", $._type) + field("type", $.type) ) ), _tuple_type_item_identifier: ($) => @@ -471,11 +471,11 @@ module.exports = grammar({ optional($._async_keyword), optional(choice($.throws_clause, $.throws)), $._arrow_operator, - field("return_type", $._type) + field("return_type", $.type) ), - array_type: ($) => seq("[", field("element", $._type), "]"), + array_type: ($) => seq("[", field("element", $.type), "]"), dictionary_type: ($) => - seq("[", field("key", $._type), ":", field("value", $._type), "]"), + seq("[", field("key", $.type), ":", field("value", $.type), "]"), optional_type: ($) => prec.left( seq( @@ -622,7 +622,7 @@ module.exports = grammar({ as_expression: ($) => prec.left( PRECS.as, - seq(field("expr", $.expression), $.as_operator, field("type", $._type)) + seq(field("expr", $.expression), $.as_operator, field("type", $.type)) ), selector_expression: ($) => seq( @@ -699,7 +699,7 @@ module.exports = grammar({ seq( field("target", $.expression), field("op", $._is_operator), - field("type", $._type) + field("type", $.type) ) ), comparison_expression: ($) => @@ -777,7 +777,7 @@ module.exports = grammar({ seq("(", optional(sep1Opt($.value_argument, ",")), ")"), _fn_call_lambda_arguments: ($) => sep1($.lambda_literal, seq(field("name", $.simple_identifier), ":")), - type_arguments: ($) => prec.left(seq("<", sep1Opt($._type, ","), ">")), + type_arguments: ($) => prec.left(seq("<", sep1Opt($.type, ","), ">")), value_arguments: ($) => seq( choice( @@ -1450,7 +1450,7 @@ module.exports = grammar({ field("name", alias($.simple_identifier, $.type_identifier)), optional($.type_parameters), $._equal_sign, - field("value", $._type) + field("value", $.type) ), function_declaration: ($) => prec.right( @@ -1566,7 +1566,7 @@ module.exports = grammar({ seq( optional($.type_parameter_modifiers), $._type_parameter_possibly_packed, - optional(seq(":", $._type)) + optional(seq(":", $.type)) ), _type_parameter_possibly_packed: ($) => choice( @@ -1590,7 +1590,7 @@ module.exports = grammar({ repeat($.attribute), field("constrained_type", $._constrained_type), choice($._equal_sign, $._eq_eq), - field("must_equal", $._type) + field("must_equal", $.type) ), _constrained_type: ($) => choice($.identifier, $.nested_type_identifier), nested_type_identifier: ($) => @@ -1698,7 +1698,7 @@ module.exports = grammar({ optional( seq(optional($.wildcard_pattern), $.simple_identifier, ":") ), - $._type, + $.type, optional(seq($._equal_sign, $.expression)) ), "," @@ -1833,9 +1833,9 @@ module.exports = grammar({ optional($.modifiers), "associatedtype", field("name", alias($.simple_identifier, $.type_identifier)), - optional(seq(":", field("must_inherit", $._type))), + optional(seq(":", field("must_inherit", $.type))), optional($.type_constraints), - optional(seq($._equal_sign, field("default_value", $._type))) + optional(seq($._equal_sign, field("default_value", $.type))) ), //////////////////////////////// // Attributes - https://docs.swift.org/swift-book/ReferenceManual/Attributes.html @@ -1934,8 +1934,8 @@ module.exports = grammar({ ), _type_casting_pattern: ($) => choice( - seq("is", $._type), - seq(alias($._binding_pattern_no_expr, $.pattern), $._as, $._type) + seq("is", $.type), + seq(alias($._binding_pattern_no_expr, $.pattern), $._as, $.type) ), _binding_pattern: ($) => seq( diff --git a/unified/extractor/tree-sitter-swift/node-types.yml b/unified/extractor/tree-sitter-swift/node-types.yml index 60ee02abfbf..5c4098db84f 100644 --- a/unified/extractor/tree-sitter-swift/node-types.yml +++ b/unified/extractor/tree-sitter-swift/node-types.yml @@ -79,13 +79,11 @@ named: array_literal: element*: expression array_type: - element+: [type_modifiers, unannotated_type] - name: unannotated_type + element: type as_expression: $children: as_operator expr: expression - name: unannotated_type - type+: [type_modifiers, unannotated_type] + type: type as_operator: assignment: operator: ["%=", "*=", "+=", "-=", "/=", "="] @@ -93,9 +91,9 @@ named: target: directly_assignable_expression associatedtype_declaration: $children*: [modifiers, type_constraints] - default_value*: [type_modifiers, unannotated_type] - must_inherit*: [type_modifiers, unannotated_type] - name+: [type_identifier, unannotated_type] + default_value?: type + must_inherit?: type + name: type_identifier attribute: $children+: [expression, user_type] availability_condition: @@ -126,10 +124,9 @@ named: error?: pattern catch_keyword: check_expression: - name: unannotated_type op: "is" target: expression - type+: [type_modifiers, unannotated_type] + type: type class_body: $children*: [associatedtype_declaration, class_declaration, deinit_declaration, function_declaration, import_declaration, init_declaration, multiline_comment, operator_declaration, precedence_group_declaration, property_declaration, protocol_declaration, subscript_declaration, typealias_declaration] class_declaration: @@ -175,9 +172,8 @@ named: key*: expression value*: expression dictionary_type: - key+: [type_modifiers, unannotated_type] - name+: unannotated_type - value+: [type_modifiers, unannotated_type] + key: type + value: type didset_clause: $children*: [modifiers, simple_identifier, statements] directive: @@ -199,13 +195,11 @@ named: name+: simple_identifier raw_value*: expression enum_type_parameters: - $children*: [expression, type_modifiers, wildcard_pattern] - name*: unannotated_type + $children*: [expression, type, wildcard_pattern] equality_constraint: $children*: attribute constrained_type: [identifier, nested_type_identifier] - must_equal+: [type_modifiers, unannotated_type] - name: unannotated_type + must_equal: type equality_expression: lhs: expression op: ["!=", "!==", "==", "==="] @@ -225,14 +219,13 @@ named: $children*: [attribute, inheritance_modifier, modifiers, ownership_modifier, parameter, property_behavior_modifier, throws, throws_clause, type_constraints, type_parameters] body: function_body default_value*: expression - name+: [referenceable_operator, simple_identifier, unannotated_type] - return_type*: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + name: [referenceable_operator, simple_identifier] + return_type?: [implicitly_unwrapped_type, type] function_modifier: function_type: $children?: [throws, throws_clause] - name: unannotated_type params: unannotated_type - return_type+: [type_modifiers, unannotated_type] + return_type: type getter_specifier: $children*: [mutation_modifier, throws, throws_clause] guard_statement: @@ -242,15 +235,13 @@ named: identifier: $children+: simple_identifier if_condition: - $children*: [availability_condition, expression, pattern, type_annotation, type_modifiers, user_type, value_binding_pattern, where_clause, wildcard_pattern] + $children*: [availability_condition, expression, pattern, type, type_annotation, user_type, value_binding_pattern, where_clause, wildcard_pattern] bound_identifier?: simple_identifier - name?: unannotated_type if_statement: $children*: [else, if_statement, statements] condition+: if_condition implicitly_unwrapped_type: - $children?: type_modifiers - name: unannotated_type + $children: type import_declaration: $children+: [identifier, modifiers] infix_expression: @@ -260,8 +251,7 @@ named: inheritance_constraint: $children*: attribute constrained_type: [identifier, nested_type_identifier] - inherits_from+: [implicitly_unwrapped_type, type_modifiers, unannotated_type] - name?: unannotated_type + inherits_from: [implicitly_unwrapped_type, type] inheritance_modifier: inheritance_specifier: inherits_from: [function_type, suppressed_constraint, user_type] @@ -282,8 +272,7 @@ named: $children: expression lambda_function_type: $children*: [lambda_function_type_parameters, throws, throws_clause] - name?: unannotated_type - return_type*: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + return_type?: [implicitly_unwrapped_type, type] lambda_function_type_parameters: $children+: lambda_parameter lambda_literal: @@ -293,8 +282,8 @@ named: lambda_parameter: $children?: [parameter_modifiers, self_expression] external_name?: simple_identifier - name*: [simple_identifier, unannotated_type] - type*: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + name?: simple_identifier + type?: [implicitly_unwrapped_type, type] line_str_text: line_string_literal: interpolation*: interpolated_expression @@ -352,15 +341,14 @@ named: parameter: $children?: parameter_modifiers external_name?: simple_identifier - name+: [simple_identifier, unannotated_type] - type+: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + name: simple_identifier + type: [implicitly_unwrapped_type, type] parameter_modifier: parameter_modifiers: $children+: parameter_modifier pattern: - $children*: [expression, pattern, type_modifiers, user_type, value_binding_pattern, wildcard_pattern] + $children*: [expression, pattern, type, user_type, value_binding_pattern, wildcard_pattern] bound_identifier?: simple_identifier - name?: unannotated_type playground_literal: $children+: expression postfix_expression: @@ -395,8 +383,8 @@ named: protocol_function_declaration: $children*: [attribute, modifiers, parameter, statements, throws, throws_clause, type_constraints, type_parameters] default_value*: expression - name*: [referenceable_operator, simple_identifier, unannotated_type] - return_type*: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + name?: [referenceable_operator, simple_identifier] + return_type?: [implicitly_unwrapped_type, type] protocol_property_declaration: $children+: [modifiers, protocol_property_requirements, type_annotation, type_constraints] name: pattern @@ -441,8 +429,7 @@ named: subscript_declaration: $children+: [attribute, computed_property, modifiers, parameter, type_constraints, type_parameters] default_value*: expression - name?: unannotated_type - return_type*: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + return_type?: [implicitly_unwrapped_type, type] super_expression: suppressed_constraint: suppressed: type_identifier @@ -474,14 +461,15 @@ named: tuple_type_item: $children*: [parameter_modifiers, wildcard_pattern] element?: [dictionary_type, existential_type, opaque_type] - name*: [simple_identifier, unannotated_type] - type*: [type_modifiers, unannotated_type] + name?: simple_identifier + type?: type + type: + modifiers?: type_modifiers + name: unannotated_type type_annotation: - name?: unannotated_type - type+: [implicitly_unwrapped_type, type_modifiers, unannotated_type] + type: [implicitly_unwrapped_type, type] type_arguments: - $children*: type_modifiers - name+: unannotated_type + $children+: type type_constraint: $children: [equality_constraint, inheritance_constraint] type_constraints: @@ -492,8 +480,7 @@ named: type_pack_expansion: $children: unannotated_type type_parameter: - $children+: [type_identifier, type_modifiers, type_parameter_modifiers, type_parameter_pack] - name?: unannotated_type + $children+: [type, type_identifier, type_parameter_modifiers, type_parameter_pack] type_parameter_modifiers: $children+: attribute type_parameter_pack: @@ -502,8 +489,8 @@ named: $children+: [type_constraints, type_parameter] typealias_declaration: $children*: [attribute, inheritance_modifier, modifiers, ownership_modifier, property_behavior_modifier, type_parameters] - name+: [type_identifier, unannotated_type] - value+: [type_modifiers, unannotated_type] + name: type_identifier + value: type user_type: $children+: [type_arguments, type_identifier] value_argument: