mirror of
https://github.com/github/codeql.git
synced 2026-05-14 03:09:26 +02:00
unified: add supertypes for various kinds of declarations
Hides a bunch of huge unions under (hopefully) sensible supertypes.
This commit is contained in:
@@ -84,7 +84,14 @@ if (tree_sitter_version_supports_emoji()) {
|
||||
|
||||
module.exports = grammar({
|
||||
name: "swift",
|
||||
supertypes: ($) => [$.expression, $.unannotated_type],
|
||||
supertypes: ($) => [
|
||||
$.expression,
|
||||
$.unannotated_type,
|
||||
$.global_declaration,
|
||||
$.type_level_declaration,
|
||||
$.local_declaration,
|
||||
$.protocol_member_declaration,
|
||||
],
|
||||
conflicts: ($) => [
|
||||
// @Type(... could either be an annotation constructor invocation or an annotated expression
|
||||
[$.attribute],
|
||||
@@ -1183,14 +1190,14 @@ module.exports = grammar({
|
||||
_local_statement: ($) =>
|
||||
choice(
|
||||
$.expression,
|
||||
$._local_declaration,
|
||||
$.local_declaration,
|
||||
$._labeled_statement,
|
||||
$.control_transfer_statement
|
||||
),
|
||||
_top_level_statement: ($) =>
|
||||
choice(
|
||||
$.expression,
|
||||
$._global_declaration,
|
||||
$.global_declaration,
|
||||
$._labeled_statement,
|
||||
$._throw_statement
|
||||
),
|
||||
@@ -1298,7 +1305,7 @@ module.exports = grammar({
|
||||
////////////////////////////////
|
||||
// Declarations - https://docs.swift.org/swift-book/ReferenceManual/Declarations.html
|
||||
////////////////////////////////
|
||||
_global_declaration: ($) =>
|
||||
global_declaration: ($) =>
|
||||
choice(
|
||||
$.import_declaration,
|
||||
$.property_declaration,
|
||||
@@ -1312,7 +1319,7 @@ module.exports = grammar({
|
||||
$.associatedtype_declaration,
|
||||
$.macro_declaration
|
||||
),
|
||||
_type_level_declaration: ($) =>
|
||||
type_level_declaration: ($) =>
|
||||
choice(
|
||||
$.import_declaration,
|
||||
$.property_declaration,
|
||||
@@ -1327,7 +1334,7 @@ module.exports = grammar({
|
||||
$.precedence_group_declaration,
|
||||
$.associatedtype_declaration
|
||||
),
|
||||
_local_declaration: ($) =>
|
||||
local_declaration: ($) =>
|
||||
choice(
|
||||
alias($._local_property_declaration, $.property_declaration),
|
||||
alias($._local_typealias_declaration, $.typealias_declaration),
|
||||
@@ -1598,7 +1605,7 @@ module.exports = grammar({
|
||||
_class_member_separator: ($) => choice($._semi, $.multiline_comment),
|
||||
_class_member_declarations: ($) =>
|
||||
seq(
|
||||
sep1($._type_level_declaration, $._class_member_separator),
|
||||
sep1($.type_level_declaration, $._class_member_separator),
|
||||
optional($._class_member_separator)
|
||||
),
|
||||
_function_value_parameters: ($) =>
|
||||
@@ -1666,7 +1673,7 @@ module.exports = grammar({
|
||||
throws_clause: ($) =>
|
||||
seq($._throws_keyword, "(", field("type", $.unannotated_type), ")"),
|
||||
enum_class_body: ($) =>
|
||||
seq("{", repeat(choice($.enum_entry, $._type_level_declaration)), "}"),
|
||||
seq("{", repeat(choice($.enum_entry, $.type_level_declaration)), "}"),
|
||||
enum_entry: ($) =>
|
||||
seq(
|
||||
optional($.modifiers),
|
||||
@@ -1718,16 +1725,10 @@ module.exports = grammar({
|
||||
protocol_body: ($) =>
|
||||
seq("{", optional($._protocol_member_declarations), "}"),
|
||||
_protocol_member_declarations: ($) =>
|
||||
seq(sep1($._protocol_member_declaration, $._semi), optional($._semi)),
|
||||
_protocol_member_declaration: ($) =>
|
||||
seq(sep1($.protocol_member_declaration, $._semi), optional($._semi)),
|
||||
protocol_member_declaration: ($) =>
|
||||
choice(
|
||||
alias(
|
||||
seq(
|
||||
$._bodyless_function_declaration,
|
||||
optional(field("body", $.function_body))
|
||||
),
|
||||
$.protocol_function_declaration
|
||||
),
|
||||
$.protocol_function_declaration,
|
||||
$.init_declaration,
|
||||
$.deinit_declaration,
|
||||
$.protocol_property_declaration,
|
||||
@@ -1735,6 +1736,11 @@ module.exports = grammar({
|
||||
$.associatedtype_declaration,
|
||||
$.subscript_declaration
|
||||
),
|
||||
protocol_function_declaration: ($) =>
|
||||
seq(
|
||||
$._bodyless_function_declaration,
|
||||
optional(field("body", $.function_body))
|
||||
),
|
||||
init_declaration: ($) =>
|
||||
prec.right(
|
||||
seq(
|
||||
|
||||
@@ -56,6 +56,44 @@ supertypes:
|
||||
- tuple_expression
|
||||
- value_pack_expansion
|
||||
- value_parameter_pack
|
||||
global_declaration:
|
||||
- associatedtype_declaration
|
||||
- class_declaration
|
||||
- function_declaration
|
||||
- import_declaration
|
||||
- init_declaration
|
||||
- macro_declaration
|
||||
- operator_declaration
|
||||
- precedence_group_declaration
|
||||
- property_declaration
|
||||
- protocol_declaration
|
||||
- typealias_declaration
|
||||
local_declaration:
|
||||
- class_declaration
|
||||
- function_declaration
|
||||
- property_declaration
|
||||
- typealias_declaration
|
||||
protocol_member_declaration:
|
||||
- associatedtype_declaration
|
||||
- deinit_declaration
|
||||
- init_declaration
|
||||
- protocol_function_declaration
|
||||
- protocol_property_declaration
|
||||
- subscript_declaration
|
||||
- typealias_declaration
|
||||
type_level_declaration:
|
||||
- associatedtype_declaration
|
||||
- class_declaration
|
||||
- deinit_declaration
|
||||
- function_declaration
|
||||
- import_declaration
|
||||
- init_declaration
|
||||
- operator_declaration
|
||||
- precedence_group_declaration
|
||||
- property_declaration
|
||||
- protocol_declaration
|
||||
- subscript_declaration
|
||||
- typealias_declaration
|
||||
unannotated_type:
|
||||
- array_type
|
||||
- dictionary_type
|
||||
@@ -128,7 +166,7 @@ named:
|
||||
target: expression
|
||||
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]
|
||||
$children*: [multiline_comment, type_level_declaration]
|
||||
class_declaration:
|
||||
$children*: [attribute, inheritance_modifier, inheritance_specifier, modifiers, ownership_modifier, property_behavior_modifier, type_constraints, type_parameters]
|
||||
body: [class_body, enum_class_body]
|
||||
@@ -188,7 +226,7 @@ named:
|
||||
$children*: [catch_block, statements]
|
||||
else:
|
||||
enum_class_body:
|
||||
$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]
|
||||
$children*: [enum_entry, type_level_declaration]
|
||||
enum_entry:
|
||||
$children?: modifiers
|
||||
data_contents*: enum_type_parameters
|
||||
@@ -372,8 +410,7 @@ named:
|
||||
value*: expression
|
||||
property_modifier:
|
||||
protocol_body:
|
||||
$children*: [associatedtype_declaration, deinit_declaration, init_declaration, protocol_function_declaration, protocol_property_declaration, subscript_declaration, typealias_declaration]
|
||||
body*: protocol_function_declaration
|
||||
$children*: protocol_member_declaration
|
||||
protocol_composition_type:
|
||||
$children+: unannotated_type
|
||||
protocol_declaration:
|
||||
@@ -382,9 +419,10 @@ named:
|
||||
declaration_kind: "protocol"
|
||||
name: type_identifier
|
||||
protocol_function_declaration:
|
||||
$children*: [attribute, modifiers, parameter, statements, throws, throws_clause, type_constraints, type_parameters]
|
||||
$children*: [attribute, modifiers, parameter, throws, throws_clause, type_constraints, type_parameters]
|
||||
body?: function_body
|
||||
default_value*: expression
|
||||
name?: [referenceable_operator, simple_identifier]
|
||||
name: [referenceable_operator, simple_identifier]
|
||||
return_type?: [implicitly_unwrapped_type, type]
|
||||
protocol_property_declaration:
|
||||
$children+: [modifiers, protocol_property_requirements, type_annotation, type_constraints]
|
||||
@@ -421,11 +459,11 @@ named:
|
||||
shebang_line:
|
||||
simple_identifier:
|
||||
source_file:
|
||||
$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]
|
||||
$children*: [do_statement, expression, for_statement, global_declaration, guard_statement, repeat_while_statement, shebang_line, statement_label, throw_keyword, while_statement]
|
||||
special_literal:
|
||||
statement_label:
|
||||
statements:
|
||||
$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]
|
||||
$children+: [control_transfer_statement, do_statement, expression, for_statement, guard_statement, local_declaration, repeat_while_statement, statement_label, while_statement]
|
||||
str_escaped_char:
|
||||
subscript_declaration:
|
||||
$children+: [attribute, computed_property, modifiers, parameter, type_constraints, type_parameters]
|
||||
|
||||
Reference in New Issue
Block a user