Files
codeql/swift/ql/lib/swift.dbscheme
2022-04-25 16:15:37 +01:00

1899 lines
32 KiB
Plaintext

// generated by codegen/codegen.py
// from codegen/prefix.dbscheme
/**
* The source location of the snapshot.
*/
sourceLocationPrefix(
string prefix: string ref
);
answer_to_life_the_universe_and_everything(
int answer: int ref
);
// from codegen/schema.yml
files(
unique int id: @file,
string name: string ref
);
@iterable_decl_context =
@extension_decl
| @nominal_type_decl
;
#keyset[id, index]
iterable_decl_context_members(
int id: @iterable_decl_context ref,
int index: int ref,
int member: @decl ref
);
@locatable =
@ast_node
| @condition_element
;
#keyset[id]
locatables(
int id: @locatable ref,
int location: @location ref
);
locations(
unique int id: @location,
int file: @file ref,
int start_line: int ref,
int start_column: int ref,
int end_line: int ref,
int end_column: int ref
);
@type =
@any_function_type
| @any_generic_type
| @any_metatype_type
| @builtin_type
| @dependent_member_type
| @dynamic_self_type
| @error_type
| @existential_type
| @in_out_type
| @l_value_type
| @module_type
| @placeholder_type
| @protocol_composition_type
| @reference_storage_type
| @sil_block_storage_type
| @sil_box_type
| @sil_function_type
| @sil_token_type
| @substitutable_type
| @sugar_type
| @tuple_type
| @type_variable_type
| @unknown_type
| @unresolved_type
;
#keyset[id]
types(
int id: @type ref,
string diagnostics_name: string ref,
int canonical_type: @type ref
);
extension_decls(
unique int id: @extension_decl
);
@nominal_type_decl =
@class_decl
| @enum_decl
| @protocol_decl
| @struct_decl
;
#keyset[id]
nominal_type_decls(
int id: @nominal_type_decl ref,
int type_: @type ref
);
@ast_node =
@case_label_item
| @decl
| @expr
| @pattern
| @stmt
| @stmt_condition
| @type_repr
;
condition_elements(
unique int id: @condition_element
);
#keyset[id]
condition_element_booleans(
int id: @condition_element ref,
int boolean_: @expr ref
);
#keyset[id]
condition_element_patterns(
int id: @condition_element ref,
int pattern: @pattern ref
);
#keyset[id]
condition_element_initializers(
int id: @condition_element ref,
int initializer: @expr ref
);
@any_function_type =
@function_type
| @generic_function_type
;
#keyset[id]
any_function_types(
int id: @any_function_type ref,
int result: @type ref
);
#keyset[id, index]
any_function_type_param_types(
int id: @any_function_type ref,
int index: int ref,
int param_type: @type ref
);
#keyset[id, index]
any_function_type_param_labels(
int id: @any_function_type ref,
int index: int ref,
string param_label: string ref
);
@any_generic_type =
@nominal_or_bound_generic_nominal_type
| @unbound_generic_type
;
#keyset[id]
any_generic_types(
int id: @any_generic_type ref,
int declaration: @decl ref
);
#keyset[id]
any_generic_type_parents(
int id: @any_generic_type ref,
int parent: @type ref
);
@any_metatype_type =
@existential_metatype_type
| @metatype_type
;
@builtin_type =
@any_builtin_integer_type
| @builtin_bridge_object_type
| @builtin_default_actor_storage_type
| @builtin_executor_type
| @builtin_float_type
| @builtin_job_type
| @builtin_native_object_type
| @builtin_raw_pointer_type
| @builtin_raw_unsafe_continuation_type
| @builtin_unsafe_value_buffer_type
| @builtin_vector_type
;
dependent_member_types(
unique int id: @dependent_member_type
);
dynamic_self_types(
unique int id: @dynamic_self_type
);
error_types(
unique int id: @error_type
);
in_out_types(
unique int id: @in_out_type
);
l_value_types(
unique int id: @l_value_type,
int object_type: @type ref
);
module_types(
unique int id: @module_type
);
placeholder_types(
unique int id: @placeholder_type
);
protocol_composition_types(
unique int id: @protocol_composition_type
);
existential_types(
unique int id: @existential_type
);
@reference_storage_type =
@unmanaged_storage_type
| @unowned_storage_type
| @weak_storage_type
;
sil_block_storage_types(
unique int id: @sil_block_storage_type
);
sil_box_types(
unique int id: @sil_box_type
);
sil_function_types(
unique int id: @sil_function_type
);
sil_token_types(
unique int id: @sil_token_type
);
@substitutable_type =
@archetype_type
| @generic_type_param_type
;
@sugar_type =
@paren_type
| @syntax_sugar_type
| @type_alias_type
;
tuple_types(
unique int id: @tuple_type
);
type_variable_types(
unique int id: @type_variable_type
);
unknown_types(
unique int id: @unknown_type,
string name: string ref
);
unresolved_types(
unique int id: @unresolved_type
);
class_decls(
unique int id: @class_decl
);
enum_decls(
unique int id: @enum_decl
);
protocol_decls(
unique int id: @protocol_decl
);
struct_decls(
unique int id: @struct_decl
);
@decl =
@enum_case_decl
| @extension_decl
| @if_config_decl
| @import_decl
| @missing_member_decl
| @operator_decl
| @pattern_binding_decl
| @pound_diagnostic_decl
| @precedence_group_decl
| @top_level_code_decl
| @unknown_ast_node
| @value_decl
;
@expr =
@abstract_closure_expr
| @any_try_expr
| @applied_property_wrapper_expr
| @apply_expr
| @arrow_expr
| @assign_expr
| @bind_optional_expr
| @capture_list_expr
| @code_completion_expr
| @collection_expr
| @decl_ref_expr
| @default_argument_expr
| @discard_assignment_expr
| @dot_syntax_base_ignored_expr
| @dynamic_type_expr
| @editor_placeholder_expr
| @enum_is_case_expr
| @error_expr
| @explicit_cast_expr
| @force_value_expr
| @identity_expr
| @if_expr
| @implicit_conversion_expr
| @in_out_expr
| @key_path_application_expr
| @key_path_dot_expr
| @key_path_expr
| @lazy_initializer_expr
| @literal_expr
| @lookup_expr
| @make_temporarily_escapable_expr
| @obj_c_selector_expr
| @one_way_expr
| @opaque_value_expr
| @open_existential_expr
| @optional_evaluation_expr
| @other_constructor_decl_ref_expr
| @overload_set_ref_expr
| @property_wrapper_value_placeholder_expr
| @rebind_self_in_constructor_expr
| @sequence_expr
| @super_ref_expr
| @tap_expr
| @tuple_element_expr
| @tuple_expr
| @type_expr
| @unknown_ast_node
| @unresolved_decl_ref_expr
| @unresolved_dot_expr
| @unresolved_member_expr
| @unresolved_pattern_expr
| @unresolved_specialize_expr
| @vararg_expansion_expr
;
#keyset[id]
expr_types(
int id: @expr ref,
int type_: @type ref
);
@pattern =
@any_pattern
| @binding_pattern
| @bool_pattern
| @enum_element_pattern
| @expr_pattern
| @is_pattern
| @named_pattern
| @optional_some_pattern
| @paren_pattern
| @tuple_pattern
| @typed_pattern
| @unknown_ast_node
;
@stmt =
@brace_stmt
| @break_stmt
| @case_stmt
| @continue_stmt
| @defer_stmt
| @fail_stmt
| @fallthrough_stmt
| @labeled_stmt
| @pound_assert_stmt
| @return_stmt
| @throw_stmt
| @unknown_ast_node
| @yield_stmt
;
@type_repr =
@unknown_ast_node
;
function_types(
unique int id: @function_type
);
generic_function_types(
unique int id: @generic_function_type
);
#keyset[id, index]
generic_function_type_generic_params(
int id: @generic_function_type ref,
int index: int ref,
int generic_param: @generic_type_param_type ref
);
@nominal_or_bound_generic_nominal_type =
@bound_generic_type
| @nominal_type
;
unbound_generic_types(
unique int id: @unbound_generic_type
);
existential_metatype_types(
unique int id: @existential_metatype_type
);
metatype_types(
unique int id: @metatype_type
);
@any_builtin_integer_type =
@builtin_integer_literal_type
| @builtin_integer_type
;
builtin_bridge_object_types(
unique int id: @builtin_bridge_object_type
);
builtin_default_actor_storage_types(
unique int id: @builtin_default_actor_storage_type
);
builtin_executor_types(
unique int id: @builtin_executor_type
);
builtin_float_types(
unique int id: @builtin_float_type
);
builtin_job_types(
unique int id: @builtin_job_type
);
builtin_native_object_types(
unique int id: @builtin_native_object_type
);
builtin_raw_pointer_types(
unique int id: @builtin_raw_pointer_type
);
builtin_raw_unsafe_continuation_types(
unique int id: @builtin_raw_unsafe_continuation_type
);
builtin_unsafe_value_buffer_types(
unique int id: @builtin_unsafe_value_buffer_type
);
builtin_vector_types(
unique int id: @builtin_vector_type
);
unmanaged_storage_types(
unique int id: @unmanaged_storage_type
);
unowned_storage_types(
unique int id: @unowned_storage_type
);
weak_storage_types(
unique int id: @weak_storage_type
);
@archetype_type =
@nested_archetype_type
| @opaque_type_archetype_type
| @opened_archetype_type
| @primary_archetype_type
| @sequence_archetype_type
;
generic_type_param_types(
unique int id: @generic_type_param_type,
string name: string ref
);
paren_types(
unique int id: @paren_type
);
@syntax_sugar_type =
@dictionary_type
| @unary_syntax_sugar_type
;
type_alias_types(
unique int id: @type_alias_type
);
enum_case_decls(
unique int id: @enum_case_decl
);
#keyset[id, index]
enum_case_decl_elements(
int id: @enum_case_decl ref,
int index: int ref,
int element: @enum_element_decl ref
);
if_config_decls(
unique int id: @if_config_decl
);
import_decls(
unique int id: @import_decl
);
missing_member_decls(
unique int id: @missing_member_decl
);
@operator_decl =
@infix_operator_decl
| @postfix_operator_decl
| @prefix_operator_decl
;
pattern_binding_decls(
unique int id: @pattern_binding_decl
);
#keyset[id, index]
pattern_binding_decl_inits(
int id: @pattern_binding_decl ref,
int index: int ref,
int init: @expr ref
);
#keyset[id, index]
pattern_binding_decl_patterns(
int id: @pattern_binding_decl ref,
int index: int ref,
int pattern: @pattern ref
);
pound_diagnostic_decls(
unique int id: @pound_diagnostic_decl
);
precedence_group_decls(
unique int id: @precedence_group_decl
);
top_level_code_decls(
unique int id: @top_level_code_decl,
int body: @brace_stmt ref
);
unknown_ast_nodes(
unique int id: @unknown_ast_node,
string name: string ref
);
@value_decl =
@abstract_function_decl
| @abstract_storage_decl
| @enum_element_decl
| @type_decl
;
#keyset[id]
value_decls(
int id: @value_decl ref,
int interface_type: @type ref
);
@abstract_closure_expr =
@auto_closure_expr
| @closure_expr
;
@any_try_expr =
@force_try_expr
| @optional_try_expr
| @try_expr
;
#keyset[id]
any_try_exprs(
int id: @any_try_expr ref,
int sub_expr: @expr ref
);
applied_property_wrapper_exprs(
unique int id: @applied_property_wrapper_expr
);
arguments(
unique int id: @argument,
string label: string ref,
int expr: @expr ref
);
@apply_expr =
@binary_expr
| @call_expr
| @postfix_unary_expr
| @prefix_unary_expr
| @self_apply_expr
;
#keyset[id]
apply_exprs(
int id: @apply_expr ref,
int function: @expr ref
);
#keyset[id, index]
apply_expr_arguments(
int id: @apply_expr ref,
int index: int ref,
int argument: @argument ref
);
arrow_exprs(
unique int id: @arrow_expr
);
assign_exprs(
unique int id: @assign_expr,
int dest: @expr ref,
int source: @expr ref
);
bind_optional_exprs(
unique int id: @bind_optional_expr,
int sub_expr: @expr ref
);
capture_list_exprs(
unique int id: @capture_list_expr,
int closure_body: @closure_expr ref
);
#keyset[id, index]
capture_list_expr_binding_decls(
int id: @capture_list_expr ref,
int index: int ref,
int binding_decl: @pattern_binding_decl ref
);
code_completion_exprs(
unique int id: @code_completion_expr
);
@collection_expr =
@array_expr
| @dictionary_expr
;
decl_ref_exprs(
unique int id: @decl_ref_expr,
int decl: @decl ref
);
#keyset[id, index]
decl_ref_expr_replacement_types(
int id: @decl_ref_expr ref,
int index: int ref,
int replacement_type: @type ref
);
default_argument_exprs(
unique int id: @default_argument_expr,
int param_decl: @param_decl ref,
int param_index: int ref
);
#keyset[id]
default_argument_expr_caller_side_defaults(
int id: @default_argument_expr ref,
int caller_side_default: @expr ref
);
discard_assignment_exprs(
unique int id: @discard_assignment_expr
);
dot_syntax_base_ignored_exprs(
unique int id: @dot_syntax_base_ignored_expr,
int qualifier: @expr ref,
int sub_expr: @expr ref
);
dynamic_type_exprs(
unique int id: @dynamic_type_expr,
int base_expr: @expr ref
);
editor_placeholder_exprs(
unique int id: @editor_placeholder_expr
);
enum_is_case_exprs(
unique int id: @enum_is_case_expr,
int sub_expr: @expr ref,
int type_repr: @type_repr ref,
int element: @enum_element_decl ref
);
error_exprs(
unique int id: @error_expr
);
@explicit_cast_expr =
@checked_cast_expr
| @coerce_expr
;
#keyset[id]
explicit_cast_exprs(
int id: @explicit_cast_expr ref,
int sub_expr: @expr ref
);
force_value_exprs(
unique int id: @force_value_expr,
int sub_expr: @expr ref
);
@identity_expr =
@await_expr
| @dot_self_expr
| @paren_expr
| @unresolved_member_chain_result_expr
;
#keyset[id]
identity_exprs(
int id: @identity_expr ref,
int sub_expr: @expr ref
);
if_exprs(
unique int id: @if_expr,
int condition: @expr ref,
int then_expr: @expr ref,
int else_expr: @expr ref
);
@implicit_conversion_expr =
@any_hashable_erasure_expr
| @archetype_to_super_expr
| @array_to_pointer_expr
| @bridge_from_obj_c_expr
| @bridge_to_obj_c_expr
| @class_metatype_to_object_expr
| @collection_upcast_conversion_expr
| @conditional_bridge_from_obj_c_expr
| @covariant_function_conversion_expr
| @covariant_return_conversion_expr
| @derived_to_base_expr
| @destructure_tuple_expr
| @differentiable_function_expr
| @differentiable_function_extract_original_expr
| @erasure_expr
| @existential_metatype_to_object_expr
| @foreign_object_conversion_expr
| @function_conversion_expr
| @in_out_to_pointer_expr
| @inject_into_optional_expr
| @linear_function_expr
| @linear_function_extract_original_expr
| @linear_to_differentiable_function_expr
| @load_expr
| @metatype_conversion_expr
| @pointer_to_pointer_expr
| @protocol_metatype_to_object_expr
| @string_to_pointer_expr
| @underlying_to_opaque_expr
| @unevaluated_instance_expr
| @unresolved_type_conversion_expr
;
#keyset[id]
implicit_conversion_exprs(
int id: @implicit_conversion_expr ref,
int sub_expr: @expr ref
);
in_out_exprs(
unique int id: @in_out_expr,
int sub_expr: @expr ref
);
key_path_application_exprs(
unique int id: @key_path_application_expr
);
key_path_dot_exprs(
unique int id: @key_path_dot_expr
);
key_path_exprs(
unique int id: @key_path_expr
);
#keyset[id]
key_path_expr_parsed_roots(
int id: @key_path_expr ref,
int parsed_root: @expr ref
);
#keyset[id]
key_path_expr_parsed_paths(
int id: @key_path_expr ref,
int parsed_path: @expr ref
);
lazy_initializer_exprs(
unique int id: @lazy_initializer_expr,
int sub_expr: @expr ref
);
@literal_expr =
@builtin_literal_expr
| @interpolated_string_literal_expr
| @nil_literal_expr
| @object_literal_expr
| @regex_literal_expr
;
@lookup_expr =
@dynamic_lookup_expr
| @member_ref_expr
| @subscript_expr
;
make_temporarily_escapable_exprs(
unique int id: @make_temporarily_escapable_expr,
int escaping_closure: @opaque_value_expr ref,
int nonescaping_closure: @expr ref,
int sub_expr: @expr ref
);
obj_c_selector_exprs(
unique int id: @obj_c_selector_expr,
int sub_expr: @expr ref,
int method: @abstract_function_decl ref
);
one_way_exprs(
unique int id: @one_way_expr,
int sub_expr: @expr ref
);
opaque_value_exprs(
unique int id: @opaque_value_expr
);
open_existential_exprs(
unique int id: @open_existential_expr,
int sub_expr: @expr ref,
int existential: @expr ref,
int opaque_expr: @opaque_value_expr ref
);
optional_evaluation_exprs(
unique int id: @optional_evaluation_expr,
int sub_expr: @expr ref
);
other_constructor_decl_ref_exprs(
unique int id: @other_constructor_decl_ref_expr
);
@overload_set_ref_expr =
@overloaded_decl_ref_expr
;
property_wrapper_value_placeholder_exprs(
unique int id: @property_wrapper_value_placeholder_expr
);
rebind_self_in_constructor_exprs(
unique int id: @rebind_self_in_constructor_expr,
int sub_expr: @expr ref,
int self: @var_decl ref
);
sequence_exprs(
unique int id: @sequence_expr
);
super_ref_exprs(
unique int id: @super_ref_expr,
int self: @var_decl ref
);
tap_exprs(
unique int id: @tap_expr,
int var: @var_decl ref,
int body: @brace_stmt ref
);
#keyset[id]
tap_expr_sub_exprs(
int id: @tap_expr ref,
int sub_expr: @expr ref
);
tuple_element_exprs(
unique int id: @tuple_element_expr,
int sub_expr: @expr ref,
int index: int ref
);
tuple_exprs(
unique int id: @tuple_expr
);
#keyset[id, index]
tuple_expr_elements(
int id: @tuple_expr ref,
int index: int ref,
int element: @expr ref
);
type_exprs(
unique int id: @type_expr
);
#keyset[id]
type_expr_type_reprs(
int id: @type_expr ref,
int type_repr: @type_repr ref
);
unresolved_decl_ref_exprs(
unique int id: @unresolved_decl_ref_expr
);
unresolved_dot_exprs(
unique int id: @unresolved_dot_expr
);
unresolved_member_exprs(
unique int id: @unresolved_member_expr
);
unresolved_pattern_exprs(
unique int id: @unresolved_pattern_expr
);
unresolved_specialize_exprs(
unique int id: @unresolved_specialize_expr
);
vararg_expansion_exprs(
unique int id: @vararg_expansion_expr,
int sub_expr: @expr ref
);
any_patterns(
unique int id: @any_pattern
);
binding_patterns(
unique int id: @binding_pattern,
int sub_pattern: @pattern ref
);
bool_patterns(
unique int id: @bool_pattern,
boolean value: boolean ref
);
enum_element_patterns(
unique int id: @enum_element_pattern,
int element: @enum_element_decl ref
);
#keyset[id]
enum_element_pattern_sub_patterns(
int id: @enum_element_pattern ref,
int sub_pattern: @pattern ref
);
expr_patterns(
unique int id: @expr_pattern,
int sub_expr: @expr ref
);
is_patterns(
unique int id: @is_pattern,
int cast_type_repr: @type_repr ref
);
#keyset[id]
is_pattern_sub_patterns(
int id: @is_pattern ref,
int sub_pattern: @pattern ref
);
named_patterns(
unique int id: @named_pattern,
string name: string ref
);
optional_some_patterns(
unique int id: @optional_some_pattern,
int sub_pattern: @pattern ref
);
paren_patterns(
unique int id: @paren_pattern,
int sub_pattern: @pattern ref
);
tuple_patterns(
unique int id: @tuple_pattern
);
#keyset[id, index]
tuple_pattern_elements(
int id: @tuple_pattern ref,
int index: int ref,
int element: @pattern ref
);
typed_patterns(
unique int id: @typed_pattern,
int sub_pattern: @pattern ref
);
#keyset[id]
typed_pattern_type_reprs(
int id: @typed_pattern ref,
int type_repr: @type_repr ref
);
brace_stmts(
unique int id: @brace_stmt
);
#keyset[id, index]
brace_stmt_elements(
int id: @brace_stmt ref,
int index: int ref,
int element: @ast_node ref
);
break_stmts(
unique int id: @break_stmt
);
#keyset[id]
break_stmt_target_names(
int id: @break_stmt ref,
string target_name: string ref
);
#keyset[id]
break_stmt_targets(
int id: @break_stmt ref,
int target: @stmt ref
);
case_stmts(
unique int id: @case_stmt,
int body: @stmt ref
);
#keyset[id, index]
case_stmt_labels(
int id: @case_stmt ref,
int index: int ref,
int label: @case_label_item ref
);
#keyset[id, index]
case_stmt_variables(
int id: @case_stmt ref,
int index: int ref,
int variable: @var_decl ref
);
case_label_items(
unique int id: @case_label_item,
int pattern: @pattern ref
);
#keyset[id]
case_label_item_guards(
int id: @case_label_item ref,
int guard: @expr ref
);
continue_stmts(
unique int id: @continue_stmt
);
#keyset[id]
continue_stmt_target_names(
int id: @continue_stmt ref,
string target_name: string ref
);
#keyset[id]
continue_stmt_targets(
int id: @continue_stmt ref,
int target: @stmt ref
);
defer_stmts(
unique int id: @defer_stmt,
int body: @brace_stmt ref
);
fail_stmts(
unique int id: @fail_stmt
);
fallthrough_stmts(
unique int id: @fallthrough_stmt,
int fallthrough_source: @case_stmt ref,
int fallthrough_dest: @case_stmt ref
);
@labeled_stmt =
@do_catch_stmt
| @do_stmt
| @for_each_stmt
| @labeled_conditional_stmt
| @repeat_while_stmt
| @switch_stmt
;
#keyset[id]
labeled_stmt_labels(
int id: @labeled_stmt ref,
string label: string ref
);
pound_assert_stmts(
unique int id: @pound_assert_stmt
);
return_stmts(
unique int id: @return_stmt
);
#keyset[id]
return_stmt_results(
int id: @return_stmt ref,
int result: @expr ref
);
throw_stmts(
unique int id: @throw_stmt,
int sub_expr: @expr ref
);
yield_stmts(
unique int id: @yield_stmt
);
@bound_generic_type =
@bound_generic_class_type
| @bound_generic_enum_type
| @bound_generic_struct_type
;
@nominal_type =
@class_type
| @enum_type
| @protocol_type
| @struct_type
;
builtin_integer_literal_types(
unique int id: @builtin_integer_literal_type
);
builtin_integer_types(
unique int id: @builtin_integer_type
);
nested_archetype_types(
unique int id: @nested_archetype_type
);
sequence_archetype_types(
unique int id: @sequence_archetype_type
);
opaque_type_archetype_types(
unique int id: @opaque_type_archetype_type
);
opened_archetype_types(
unique int id: @opened_archetype_type
);
primary_archetype_types(
unique int id: @primary_archetype_type,
int interface_type: @generic_type_param_type ref
);
dictionary_types(
unique int id: @dictionary_type
);
@unary_syntax_sugar_type =
@array_slice_type
| @optional_type
| @variadic_sequence_type
;
infix_operator_decls(
unique int id: @infix_operator_decl
);
postfix_operator_decls(
unique int id: @postfix_operator_decl
);
prefix_operator_decls(
unique int id: @prefix_operator_decl
);
@abstract_function_decl =
@constructor_decl
| @destructor_decl
| @func_decl
;
#keyset[id]
abstract_function_decls(
int id: @abstract_function_decl ref,
string name: string ref
);
#keyset[id]
abstract_function_decl_bodies(
int id: @abstract_function_decl ref,
int body: @brace_stmt ref
);
#keyset[id, index]
abstract_function_decl_params(
int id: @abstract_function_decl ref,
int index: int ref,
int param: @param_decl ref
);
@abstract_storage_decl =
@subscript_decl
| @var_decl
;
enum_element_decls(
unique int id: @enum_element_decl,
string name: string ref
);
#keyset[id, index]
enum_element_decl_params(
int id: @enum_element_decl ref,
int index: int ref,
int param: @param_decl ref
);
@type_decl =
@abstract_type_param_decl
| @generic_type_decl
| @module_decl
;
#keyset[id]
type_decls(
int id: @type_decl ref,
string name: string ref
);
auto_closure_exprs(
unique int id: @auto_closure_expr
);
closure_exprs(
unique int id: @closure_expr,
int body: @brace_stmt ref
);
force_try_exprs(
unique int id: @force_try_expr
);
optional_try_exprs(
unique int id: @optional_try_expr
);
try_exprs(
unique int id: @try_expr
);
binary_exprs(
unique int id: @binary_expr
);
call_exprs(
unique int id: @call_expr
);
postfix_unary_exprs(
unique int id: @postfix_unary_expr
);
prefix_unary_exprs(
unique int id: @prefix_unary_expr
);
@self_apply_expr =
@constructor_ref_call_expr
| @dot_syntax_call_expr
;
#keyset[id]
self_apply_exprs(
int id: @self_apply_expr ref,
int base_expr: @expr ref
);
array_exprs(
unique int id: @array_expr
);
#keyset[id, index]
array_expr_elements(
int id: @array_expr ref,
int index: int ref,
int element: @expr ref
);
dictionary_exprs(
unique int id: @dictionary_expr
);
#keyset[id, index]
dictionary_expr_elements(
int id: @dictionary_expr ref,
int index: int ref,
int element: @expr ref
);
@checked_cast_expr =
@conditional_checked_cast_expr
| @forced_checked_cast_expr
| @is_expr
;
coerce_exprs(
unique int id: @coerce_expr
);
await_exprs(
unique int id: @await_expr
);
dot_self_exprs(
unique int id: @dot_self_expr
);
paren_exprs(
unique int id: @paren_expr
);
unresolved_member_chain_result_exprs(
unique int id: @unresolved_member_chain_result_expr
);
any_hashable_erasure_exprs(
unique int id: @any_hashable_erasure_expr
);
archetype_to_super_exprs(
unique int id: @archetype_to_super_expr
);
array_to_pointer_exprs(
unique int id: @array_to_pointer_expr
);
bridge_from_obj_c_exprs(
unique int id: @bridge_from_obj_c_expr
);
bridge_to_obj_c_exprs(
unique int id: @bridge_to_obj_c_expr
);
class_metatype_to_object_exprs(
unique int id: @class_metatype_to_object_expr
);
collection_upcast_conversion_exprs(
unique int id: @collection_upcast_conversion_expr
);
conditional_bridge_from_obj_c_exprs(
unique int id: @conditional_bridge_from_obj_c_expr
);
covariant_function_conversion_exprs(
unique int id: @covariant_function_conversion_expr
);
covariant_return_conversion_exprs(
unique int id: @covariant_return_conversion_expr
);
derived_to_base_exprs(
unique int id: @derived_to_base_expr
);
destructure_tuple_exprs(
unique int id: @destructure_tuple_expr
);
differentiable_function_exprs(
unique int id: @differentiable_function_expr
);
differentiable_function_extract_original_exprs(
unique int id: @differentiable_function_extract_original_expr
);
erasure_exprs(
unique int id: @erasure_expr
);
existential_metatype_to_object_exprs(
unique int id: @existential_metatype_to_object_expr
);
foreign_object_conversion_exprs(
unique int id: @foreign_object_conversion_expr
);
function_conversion_exprs(
unique int id: @function_conversion_expr
);
in_out_to_pointer_exprs(
unique int id: @in_out_to_pointer_expr
);
inject_into_optional_exprs(
unique int id: @inject_into_optional_expr
);
linear_function_exprs(
unique int id: @linear_function_expr
);
linear_function_extract_original_exprs(
unique int id: @linear_function_extract_original_expr
);
linear_to_differentiable_function_exprs(
unique int id: @linear_to_differentiable_function_expr
);
load_exprs(
unique int id: @load_expr
);
metatype_conversion_exprs(
unique int id: @metatype_conversion_expr
);
pointer_to_pointer_exprs(
unique int id: @pointer_to_pointer_expr
);
protocol_metatype_to_object_exprs(
unique int id: @protocol_metatype_to_object_expr
);
string_to_pointer_exprs(
unique int id: @string_to_pointer_expr
);
underlying_to_opaque_exprs(
unique int id: @underlying_to_opaque_expr
);
unevaluated_instance_exprs(
unique int id: @unevaluated_instance_expr
);
unresolved_type_conversion_exprs(
unique int id: @unresolved_type_conversion_expr
);
@builtin_literal_expr =
@boolean_literal_expr
| @magic_identifier_literal_expr
| @number_literal_expr
| @string_literal_expr
;
interpolated_string_literal_exprs(
unique int id: @interpolated_string_literal_expr
);
#keyset[id]
interpolated_string_literal_expr_interpolation_exprs(
int id: @interpolated_string_literal_expr ref,
int interpolation_expr: @opaque_value_expr ref
);
#keyset[id]
interpolated_string_literal_expr_interpolation_count_exprs(
int id: @interpolated_string_literal_expr ref,
int interpolation_count_expr: @expr ref
);
#keyset[id]
interpolated_string_literal_expr_literal_capacity_exprs(
int id: @interpolated_string_literal_expr ref,
int literal_capacity_expr: @expr ref
);
#keyset[id]
interpolated_string_literal_expr_appending_exprs(
int id: @interpolated_string_literal_expr ref,
int appending_expr: @tap_expr ref
);
regex_literal_exprs(
unique int id: @regex_literal_expr
);
nil_literal_exprs(
unique int id: @nil_literal_expr
);
object_literal_exprs(
unique int id: @object_literal_expr
);
@dynamic_lookup_expr =
@dynamic_member_ref_expr
| @dynamic_subscript_expr
;
member_ref_exprs(
unique int id: @member_ref_expr,
int base_expr: @expr ref
);
subscript_exprs(
unique int id: @subscript_expr,
int base_expr: @expr ref
);
#keyset[id, index]
subscript_expr_arguments(
int id: @subscript_expr ref,
int index: int ref,
int argument: @argument ref
);
overloaded_decl_ref_exprs(
unique int id: @overloaded_decl_ref_expr
);
do_catch_stmts(
unique int id: @do_catch_stmt,
int body: @stmt ref
);
#keyset[id, index]
do_catch_stmt_catches(
int id: @do_catch_stmt ref,
int index: int ref,
int catch: @case_stmt ref
);
do_stmts(
unique int id: @do_stmt,
int body: @brace_stmt ref
);
for_each_stmts(
unique int id: @for_each_stmt,
int body: @brace_stmt ref
);
#keyset[id]
for_each_stmt_wheres(
int id: @for_each_stmt ref,
int where: @expr ref
);
@labeled_conditional_stmt =
@guard_stmt
| @if_stmt
| @while_stmt
;
#keyset[id]
labeled_conditional_stmts(
int id: @labeled_conditional_stmt ref,
int condition: @stmt_condition ref
);
stmt_conditions(
unique int id: @stmt_condition
);
#keyset[id, index]
stmt_condition_elements(
int id: @stmt_condition ref,
int index: int ref,
int element: @condition_element ref
);
repeat_while_stmts(
unique int id: @repeat_while_stmt,
int condition: @expr ref,
int body: @stmt ref
);
switch_stmts(
unique int id: @switch_stmt,
int expr: @expr ref
);
#keyset[id, index]
switch_stmt_cases(
int id: @switch_stmt ref,
int index: int ref,
int case_: @case_stmt ref
);
bound_generic_class_types(
unique int id: @bound_generic_class_type
);
bound_generic_enum_types(
unique int id: @bound_generic_enum_type
);
bound_generic_struct_types(
unique int id: @bound_generic_struct_type
);
class_types(
unique int id: @class_type,
int decl: @class_decl ref
);
enum_types(
unique int id: @enum_type
);
protocol_types(
unique int id: @protocol_type
);
struct_types(
unique int id: @struct_type,
int decl: @struct_decl ref
);
array_slice_types(
unique int id: @array_slice_type
);
optional_types(
unique int id: @optional_type
);
variadic_sequence_types(
unique int id: @variadic_sequence_type
);
constructor_decls(
unique int id: @constructor_decl
);
destructor_decls(
unique int id: @destructor_decl
);
@func_decl =
@accessor_decl
| @concrete_func_decl
;
subscript_decls(
unique int id: @subscript_decl
);
@var_decl =
@concrete_var_decl
| @param_decl
;
#keyset[id]
var_decls(
int id: @var_decl ref,
string name: string ref,
int type_: @type ref
);
@abstract_type_param_decl =
@associated_type_decl
| @generic_type_param_decl
;
@generic_context =
@abstract_function_decl
| @extension_decl
| @generic_type_decl
| @subscript_expr
;
#keyset[id, index]
generic_context_generic_type_params(
int id: @generic_context ref,
int index: int ref,
int generic_type_param: @generic_type_param_decl ref
);
@generic_type_decl =
@nominal_type_decl
| @opaque_type_decl
| @type_alias_decl
;
module_decls(
unique int id: @module_decl
);
constructor_ref_call_exprs(
unique int id: @constructor_ref_call_expr
);
dot_syntax_call_exprs(
unique int id: @dot_syntax_call_expr
);
conditional_checked_cast_exprs(
unique int id: @conditional_checked_cast_expr
);
forced_checked_cast_exprs(
unique int id: @forced_checked_cast_expr
);
is_exprs(
unique int id: @is_expr
);
boolean_literal_exprs(
unique int id: @boolean_literal_expr,
boolean value: boolean ref
);
magic_identifier_literal_exprs(
unique int id: @magic_identifier_literal_expr,
string kind: string ref
);
@number_literal_expr =
@float_literal_expr
| @integer_literal_expr
;
string_literal_exprs(
unique int id: @string_literal_expr,
string value: string ref
);
dynamic_member_ref_exprs(
unique int id: @dynamic_member_ref_expr
);
dynamic_subscript_exprs(
unique int id: @dynamic_subscript_expr
);
guard_stmts(
unique int id: @guard_stmt,
int body: @brace_stmt ref
);
if_stmts(
unique int id: @if_stmt,
int then: @stmt ref
);
#keyset[id]
if_stmt_elses(
int id: @if_stmt ref,
int else: @stmt ref
);
while_stmts(
unique int id: @while_stmt,
int body: @stmt ref
);
accessor_decls(
unique int id: @accessor_decl
);
concrete_func_decls(
unique int id: @concrete_func_decl
);
concrete_var_decls(
unique int id: @concrete_var_decl,
int introducer_int: int ref
);
param_decls(
unique int id: @param_decl
);
associated_type_decls(
unique int id: @associated_type_decl
);
generic_type_param_decls(
unique int id: @generic_type_param_decl
);
opaque_type_decls(
unique int id: @opaque_type_decl
);
type_alias_decls(
unique int id: @type_alias_decl
);
float_literal_exprs(
unique int id: @float_literal_expr,
string string_value: string ref
);
integer_literal_exprs(
unique int id: @integer_literal_expr,
string string_value: string ref
);
@element =
@argument
| @file
| @generic_context
| @iterable_decl_context
| @locatable
| @location
| @type
;