Skip to content

Commit fe72491

Browse files
committed
unified: add supertypes for various kinds of declarations
Hides a bunch of huge unions under (hopefully) sensible supertypes.
1 parent a2adf26 commit fe72491

2 files changed

Lines changed: 69 additions & 25 deletions

File tree

unified/extractor/tree-sitter-swift/grammar.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,14 @@ if (tree_sitter_version_supports_emoji()) {
8484

8585
module.exports = grammar({
8686
name: "swift",
87-
supertypes: ($) => [$.expression, $.unannotated_type],
87+
supertypes: ($) => [
88+
$.expression,
89+
$.unannotated_type,
90+
$.global_declaration,
91+
$.type_level_declaration,
92+
$.local_declaration,
93+
$.protocol_member_declaration,
94+
],
8895
conflicts: ($) => [
8996
// @Type(... could either be an annotation constructor invocation or an annotated expression
9097
[$.attribute],
@@ -1183,14 +1190,14 @@ module.exports = grammar({
11831190
_local_statement: ($) =>
11841191
choice(
11851192
$.expression,
1186-
$._local_declaration,
1193+
$.local_declaration,
11871194
$._labeled_statement,
11881195
$.control_transfer_statement
11891196
),
11901197
_top_level_statement: ($) =>
11911198
choice(
11921199
$.expression,
1193-
$._global_declaration,
1200+
$.global_declaration,
11941201
$._labeled_statement,
11951202
$._throw_statement
11961203
),
@@ -1298,7 +1305,7 @@ module.exports = grammar({
12981305
////////////////////////////////
12991306
// Declarations - https://docs.swift.org/swift-book/ReferenceManual/Declarations.html
13001307
////////////////////////////////
1301-
_global_declaration: ($) =>
1308+
global_declaration: ($) =>
13021309
choice(
13031310
$.import_declaration,
13041311
$.property_declaration,
@@ -1312,7 +1319,7 @@ module.exports = grammar({
13121319
$.associatedtype_declaration,
13131320
$.macro_declaration
13141321
),
1315-
_type_level_declaration: ($) =>
1322+
type_level_declaration: ($) =>
13161323
choice(
13171324
$.import_declaration,
13181325
$.property_declaration,
@@ -1327,7 +1334,7 @@ module.exports = grammar({
13271334
$.precedence_group_declaration,
13281335
$.associatedtype_declaration
13291336
),
1330-
_local_declaration: ($) =>
1337+
local_declaration: ($) =>
13311338
choice(
13321339
alias($._local_property_declaration, $.property_declaration),
13331340
alias($._local_typealias_declaration, $.typealias_declaration),
@@ -1598,7 +1605,7 @@ module.exports = grammar({
15981605
_class_member_separator: ($) => choice($._semi, $.multiline_comment),
15991606
_class_member_declarations: ($) =>
16001607
seq(
1601-
sep1($._type_level_declaration, $._class_member_separator),
1608+
sep1($.type_level_declaration, $._class_member_separator),
16021609
optional($._class_member_separator)
16031610
),
16041611
_function_value_parameters: ($) =>
@@ -1666,7 +1673,7 @@ module.exports = grammar({
16661673
throws_clause: ($) =>
16671674
seq($._throws_keyword, "(", field("type", $.unannotated_type), ")"),
16681675
enum_class_body: ($) =>
1669-
seq("{", repeat(choice($.enum_entry, $._type_level_declaration)), "}"),
1676+
seq("{", repeat(choice($.enum_entry, $.type_level_declaration)), "}"),
16701677
enum_entry: ($) =>
16711678
seq(
16721679
optional($.modifiers),
@@ -1718,23 +1725,22 @@ module.exports = grammar({
17181725
protocol_body: ($) =>
17191726
seq("{", optional($._protocol_member_declarations), "}"),
17201727
_protocol_member_declarations: ($) =>
1721-
seq(sep1($._protocol_member_declaration, $._semi), optional($._semi)),
1722-
_protocol_member_declaration: ($) =>
1728+
seq(sep1($.protocol_member_declaration, $._semi), optional($._semi)),
1729+
protocol_member_declaration: ($) =>
17231730
choice(
1724-
alias(
1725-
seq(
1726-
$._bodyless_function_declaration,
1727-
optional(field("body", $.function_body))
1728-
),
1729-
$.protocol_function_declaration
1730-
),
1731+
$.protocol_function_declaration,
17311732
$.init_declaration,
17321733
$.deinit_declaration,
17331734
$.protocol_property_declaration,
17341735
$.typealias_declaration,
17351736
$.associatedtype_declaration,
17361737
$.subscript_declaration
17371738
),
1739+
protocol_function_declaration: ($) =>
1740+
seq(
1741+
$._bodyless_function_declaration,
1742+
optional(field("body", $.function_body))
1743+
),
17381744
init_declaration: ($) =>
17391745
prec.right(
17401746
seq(

unified/extractor/tree-sitter-swift/node-types.yml

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,44 @@ supertypes:
5656
- tuple_expression
5757
- value_pack_expansion
5858
- value_parameter_pack
59+
global_declaration:
60+
- associatedtype_declaration
61+
- class_declaration
62+
- function_declaration
63+
- import_declaration
64+
- init_declaration
65+
- macro_declaration
66+
- operator_declaration
67+
- precedence_group_declaration
68+
- property_declaration
69+
- protocol_declaration
70+
- typealias_declaration
71+
local_declaration:
72+
- class_declaration
73+
- function_declaration
74+
- property_declaration
75+
- typealias_declaration
76+
protocol_member_declaration:
77+
- associatedtype_declaration
78+
- deinit_declaration
79+
- init_declaration
80+
- protocol_function_declaration
81+
- protocol_property_declaration
82+
- subscript_declaration
83+
- typealias_declaration
84+
type_level_declaration:
85+
- associatedtype_declaration
86+
- class_declaration
87+
- deinit_declaration
88+
- function_declaration
89+
- import_declaration
90+
- init_declaration
91+
- operator_declaration
92+
- precedence_group_declaration
93+
- property_declaration
94+
- protocol_declaration
95+
- subscript_declaration
96+
- typealias_declaration
5997
unannotated_type:
6098
- array_type
6199
- dictionary_type
@@ -128,7 +166,7 @@ named:
128166
target: expression
129167
type: type
130168
class_body:
131-
$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]
169+
$children*: [multiline_comment, type_level_declaration]
132170
class_declaration:
133171
$children*: [attribute, inheritance_modifier, inheritance_specifier, modifiers, ownership_modifier, property_behavior_modifier, type_constraints, type_parameters]
134172
body: [class_body, enum_class_body]
@@ -188,7 +226,7 @@ named:
188226
$children*: [catch_block, statements]
189227
else:
190228
enum_class_body:
191-
$children*: [associatedtype_declaration, class_declaration, deinit_declaration, enum_entry, function_declaration, import_declaration, init_declaration, operator_declaration, precedence_group_declaration, property_declaration, protocol_declaration, subscript_declaration, typealias_declaration]
229+
$children*: [enum_entry, type_level_declaration]
192230
enum_entry:
193231
$children?: modifiers
194232
data_contents*: enum_type_parameters
@@ -372,8 +410,7 @@ named:
372410
value*: expression
373411
property_modifier:
374412
protocol_body:
375-
$children*: [associatedtype_declaration, deinit_declaration, init_declaration, protocol_function_declaration, protocol_property_declaration, subscript_declaration, typealias_declaration]
376-
body*: protocol_function_declaration
413+
$children*: protocol_member_declaration
377414
protocol_composition_type:
378415
$children+: unannotated_type
379416
protocol_declaration:
@@ -382,9 +419,10 @@ named:
382419
declaration_kind: "protocol"
383420
name: type_identifier
384421
protocol_function_declaration:
385-
$children*: [attribute, modifiers, parameter, statements, throws, throws_clause, type_constraints, type_parameters]
422+
$children*: [attribute, modifiers, parameter, throws, throws_clause, type_constraints, type_parameters]
423+
body?: function_body
386424
default_value*: expression
387-
name?: [referenceable_operator, simple_identifier]
425+
name: [referenceable_operator, simple_identifier]
388426
return_type?: [implicitly_unwrapped_type, type]
389427
protocol_property_declaration:
390428
$children+: [modifiers, protocol_property_requirements, type_annotation, type_constraints]
@@ -421,11 +459,11 @@ named:
421459
shebang_line:
422460
simple_identifier:
423461
source_file:
424-
$children*: [associatedtype_declaration, class_declaration, do_statement, expression, for_statement, function_declaration, guard_statement, import_declaration, init_declaration, macro_declaration, operator_declaration, precedence_group_declaration, property_declaration, protocol_declaration, repeat_while_statement, shebang_line, statement_label, throw_keyword, typealias_declaration, while_statement]
462+
$children*: [do_statement, expression, for_statement, global_declaration, guard_statement, repeat_while_statement, shebang_line, statement_label, throw_keyword, while_statement]
425463
special_literal:
426464
statement_label:
427465
statements:
428-
$children+: [class_declaration, control_transfer_statement, do_statement, expression, for_statement, function_declaration, guard_statement, property_declaration, repeat_while_statement, statement_label, typealias_declaration, while_statement]
466+
$children+: [control_transfer_statement, do_statement, expression, for_statement, guard_statement, local_declaration, repeat_while_statement, statement_label, while_statement]
429467
str_escaped_char:
430468
subscript_declaration:
431469
$children+: [attribute, computed_property, modifiers, parameter, type_constraints, type_parameters]

0 commit comments

Comments
 (0)