diff --git a/unified/ql/lib/codeql/unified/Ast.qll b/unified/ql/lib/codeql/unified/Ast.qll index 3ec274925a1..5b9491fdb9f 100644 --- a/unified/ql/lib/codeql/unified/Ast.qll +++ b/unified/ql/lib/codeql/unified/Ast.qll @@ -1056,6 +1056,8 @@ module Swift { final override AstNode getAFieldOrChild() { swift_getter_specifier_child(this, _, result) } } + class GlobalDeclaration extends @swift_global_declaration, AstNode { } + /** A class representing `guard_statement` nodes. */ class GuardStatement extends @swift_guard_statement, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -1422,6 +1424,8 @@ module Swift { } } + class LocalDeclaration extends @swift_local_declaration, AstNode { } + /** A class representing `macro_declaration` nodes. */ class MacroDeclaration extends @swift_macro_declaration, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -1923,16 +1927,11 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ProtocolBody" } - /** Gets the node corresponding to the field `body`. */ - final ProtocolFunctionDeclaration getBody(int i) { swift_protocol_body_body(this, i, result) } - /** Gets the `i`th child of this node. */ - final AstNode getChild(int i) { swift_protocol_body_child(this, i, result) } + final ProtocolMemberDeclaration getChild(int i) { swift_protocol_body_child(this, i, result) } /** Gets a field or child node of this node. */ - final override AstNode getAFieldOrChild() { - swift_protocol_body_body(this, _, result) or swift_protocol_body_child(this, _, result) - } + final override AstNode getAFieldOrChild() { swift_protocol_body_child(this, _, result) } } /** A class representing `protocol_composition_type` nodes. */ @@ -1983,13 +1982,16 @@ module Swift { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ProtocolFunctionDeclaration" } + /** Gets the node corresponding to the field `body`. */ + final FunctionBody getBody() { swift_protocol_function_declaration_body(this, result) } + /** Gets the node corresponding to the field `default_value`. */ final Expression getDefaultValue(int i) { swift_protocol_function_declaration_default_value(this, i, result) } /** Gets the node corresponding to the field `name`. */ - final AstNode getName() { swift_protocol_function_declaration_name(this, result) } + final AstNode getName() { swift_protocol_function_declaration_def(this, result) } /** Gets the node corresponding to the field `return_type`. */ final AstNode getReturnType() { swift_protocol_function_declaration_return_type(this, result) } @@ -1999,13 +2001,16 @@ module Swift { /** Gets a field or child node of this node. */ final override AstNode getAFieldOrChild() { + swift_protocol_function_declaration_body(this, result) or swift_protocol_function_declaration_default_value(this, _, result) or - swift_protocol_function_declaration_name(this, result) or + swift_protocol_function_declaration_def(this, result) or swift_protocol_function_declaration_return_type(this, result) or swift_protocol_function_declaration_child(this, _, result) } } + class ProtocolMemberDeclaration extends @swift_protocol_member_declaration, AstNode { } + /** A class representing `protocol_property_declaration` nodes. */ class ProtocolPropertyDeclaration extends @swift_protocol_property_declaration, AstNode { /** Gets the name of the primary QL class for this element. */ @@ -2542,6 +2547,8 @@ module Swift { final override string getAPrimaryQlClass() { result = "TypeIdentifier" } } + class TypeLevelDeclaration extends @swift_type_level_declaration, AstNode { } + /** A class representing `type_modifiers` nodes. */ class TypeModifiers extends @swift_type_modifiers, AstNode { /** Gets the name of the primary QL class for this element. */ diff --git a/unified/ql/lib/unified.dbscheme b/unified/ql/lib/unified.dbscheme index a01eb65170c..b50bc56eaa2 100644 --- a/unified/ql/lib/unified.dbscheme +++ b/unified/ql/lib/unified.dbscheme @@ -356,7 +356,7 @@ swift_check_expression_def( int type__: @swift_type__ ref ); -@swift_class_body_child_type = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_token_multiline_comment | @swift_typealias_declaration +@swift_class_body_child_type = @swift_token_multiline_comment | @swift_type_level_declaration #keyset[swift_class_body, index] swift_class_body_child( @@ -626,7 +626,7 @@ swift_do_statement_def( unique int id: @swift_do_statement ); -@swift_enum_class_body_child_type = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_enum_entry | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_typealias_declaration +@swift_enum_class_body_child_type = @swift_enum_entry | @swift_type_level_declaration #keyset[swift_enum_class_body, index] swift_enum_class_body_child( @@ -805,6 +805,8 @@ swift_getter_specifier_def( unique int id: @swift_getter_specifier ); +@swift_global_declaration = @swift_associatedtype_declaration | @swift_class_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_macro_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_typealias_declaration + #keyset[swift_guard_statement, index] swift_guard_statement_condition( int swift_guard_statement: @swift_guard_statement ref, @@ -1107,6 +1109,8 @@ swift_line_string_literal_def( unique int id: @swift_line_string_literal ); +@swift_local_declaration = @swift_class_declaration | @swift_function_declaration | @swift_property_declaration | @swift_typealias_declaration + #keyset[swift_macro_declaration, index] swift_macro_declaration_default_value( int swift_macro_declaration: @swift_macro_declaration ref, @@ -1438,20 +1442,11 @@ swift_property_declaration_def( unique int id: @swift_property_declaration ); -#keyset[swift_protocol_body, index] -swift_protocol_body_body( - int swift_protocol_body: @swift_protocol_body ref, - int index: int ref, - unique int body: @swift_protocol_function_declaration ref -); - -@swift_protocol_body_child_type = @swift_associatedtype_declaration | @swift_deinit_declaration | @swift_init_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_subscript_declaration | @swift_typealias_declaration - #keyset[swift_protocol_body, index] swift_protocol_body_child( int swift_protocol_body: @swift_protocol_body ref, int index: int ref, - unique int child: @swift_protocol_body_child_type ref + unique int child: @swift_protocol_member_declaration ref ); swift_protocol_body_def( @@ -1490,6 +1485,11 @@ swift_protocol_declaration_def( int name: @swift_token_type_identifier ref ); +swift_protocol_function_declaration_body( + unique int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, + unique int body: @swift_function_body ref +); + #keyset[swift_protocol_function_declaration, index] swift_protocol_function_declaration_default_value( int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, @@ -1499,11 +1499,6 @@ swift_protocol_function_declaration_default_value( @swift_protocol_function_declaration_name_type = @swift_referenceable_operator | @swift_token_simple_identifier -swift_protocol_function_declaration_name( - unique int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, - unique int name: @swift_protocol_function_declaration_name_type ref -); - @swift_protocol_function_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ swift_protocol_function_declaration_return_type( @@ -1511,7 +1506,7 @@ swift_protocol_function_declaration_return_type( unique int return_type: @swift_protocol_function_declaration_return_type_type ref ); -@swift_protocol_function_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_statements | @swift_throws_clause | @swift_token_throws | @swift_type_constraints | @swift_type_parameters +@swift_protocol_function_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_throws_clause | @swift_token_throws | @swift_type_constraints | @swift_type_parameters #keyset[swift_protocol_function_declaration, index] swift_protocol_function_declaration_child( @@ -1521,9 +1516,12 @@ swift_protocol_function_declaration_child( ); swift_protocol_function_declaration_def( - unique int id: @swift_protocol_function_declaration + unique int id: @swift_protocol_function_declaration, + int name: @swift_protocol_function_declaration_name_type ref ); +@swift_protocol_member_declaration = @swift_associatedtype_declaration | @swift_deinit_declaration | @swift_init_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_subscript_declaration | @swift_typealias_declaration + @swift_protocol_property_declaration_child_type = @swift_modifiers | @swift_protocol_property_requirements | @swift_type_annotation | @swift_type_constraints #keyset[swift_protocol_property_declaration, index] @@ -1644,7 +1642,7 @@ swift_setter_specifier_def( unique int id: @swift_setter_specifier ); -@swift_source_file_child_type = @swift_associatedtype_declaration | @swift_class_declaration | @swift_do_statement | @swift_expression | @swift_for_statement | @swift_function_declaration | @swift_guard_statement | @swift_import_declaration | @swift_init_declaration | @swift_macro_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_repeat_while_statement | @swift_token_shebang_line | @swift_token_statement_label | @swift_token_throw_keyword | @swift_typealias_declaration | @swift_while_statement +@swift_source_file_child_type = @swift_do_statement | @swift_expression | @swift_for_statement | @swift_global_declaration | @swift_guard_statement | @swift_repeat_while_statement | @swift_token_shebang_line | @swift_token_statement_label | @swift_token_throw_keyword | @swift_while_statement #keyset[swift_source_file, index] swift_source_file_child( @@ -1657,7 +1655,7 @@ swift_source_file_def( unique int id: @swift_source_file ); -@swift_statements_child_type = @swift_class_declaration | @swift_control_transfer_statement | @swift_do_statement | @swift_expression | @swift_for_statement | @swift_function_declaration | @swift_guard_statement | @swift_property_declaration | @swift_repeat_while_statement | @swift_token_statement_label | @swift_typealias_declaration | @swift_while_statement +@swift_statements_child_type = @swift_control_transfer_statement | @swift_do_statement | @swift_expression | @swift_for_statement | @swift_guard_statement | @swift_local_declaration | @swift_repeat_while_statement | @swift_token_statement_label | @swift_while_statement #keyset[swift_statements, index] swift_statements_child( @@ -1855,6 +1853,8 @@ swift_type_constraints_def( unique int id: @swift_type_constraints ); +@swift_type_level_declaration = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_typealias_declaration + #keyset[swift_type_modifiers, index] swift_type_modifiers_child( int swift_type_modifiers: @swift_type_modifiers ref,