codeql/swift/downgrades/c2f01f2beb67e5a57e9df9b6d1c.../swift.dbscheme

2597 строки
49 KiB
Plaintext

// generated by codegen/codegen.py
// from prefix.dbscheme
/**
* The source location of the snapshot.
*/
sourceLocationPrefix(
string prefix: string ref
);
// from schema.py
@element =
@callable
| @file
| @generic_context
| @locatable
| @location
| @type
;
#keyset[id]
element_is_unknown(
int id: @element ref
);
@callable =
@abstract_closure_expr
| @abstract_function_decl
;
#keyset[id]
callable_names(
int id: @callable ref,
string name: string ref
);
#keyset[id]
callable_self_params(
int id: @callable ref,
int self_param: @param_decl_or_none ref
);
#keyset[id, index]
callable_params(
int id: @callable ref,
int index: int ref,
int param: @param_decl_or_none ref
);
#keyset[id]
callable_bodies(
int id: @callable ref,
int body: @brace_stmt_or_none ref
);
#keyset[id, index]
callable_captures(
int id: @callable ref,
int index: int ref,
int capture: @captured_decl_or_none ref
);
@file =
@db_file
;
#keyset[id]
files(
int id: @file ref,
string name: string ref
);
@locatable =
@argument
| @ast_node
| @comment
| @diagnostics
| @error_element
;
#keyset[id]
locatable_locations(
int id: @locatable ref,
int location: @location_or_none ref
);
@location =
@db_location
;
#keyset[id]
locations(
int id: @location ref,
int file: @file_or_none ref,
int start_line: int ref,
int start_column: int ref,
int end_line: int ref,
int end_column: int ref
);
@ast_node =
@availability_info
| @availability_spec
| @case_label_item
| @condition_element
| @decl
| @expr
| @pattern
| @stmt
| @stmt_condition
| @type_repr
;
comments(
unique int id: @comment,
string text: string ref
);
db_files(
unique int id: @db_file
);
db_locations(
unique int id: @db_location
);
diagnostics(
unique int id: @diagnostics,
string text: string ref,
int kind: int ref
);
@error_element =
@error_expr
| @error_type
| @overloaded_decl_ref_expr
| @unresolved_decl_ref_expr
| @unresolved_dot_expr
| @unresolved_member_chain_result_expr
| @unresolved_member_expr
| @unresolved_pattern_expr
| @unresolved_specialize_expr
| @unresolved_type
| @unresolved_type_conversion_expr
| @unspecified_element
;
availability_infos(
unique int id: @availability_info
);
#keyset[id]
availability_info_is_unavailable(
int id: @availability_info ref
);
#keyset[id, index]
availability_info_specs(
int id: @availability_info ref,
int index: int ref,
int spec: @availability_spec_or_none ref
);
@availability_spec =
@other_availability_spec
| @platform_version_availability_spec
;
unspecified_elements(
unique int id: @unspecified_element,
string property: string ref,
string error: string ref
);
#keyset[id]
unspecified_element_parents(
int id: @unspecified_element ref,
int parent: @element ref
);
#keyset[id]
unspecified_element_indices(
int id: @unspecified_element ref,
int index: int ref
);
other_availability_specs(
unique int id: @other_availability_spec
);
platform_version_availability_specs(
unique int id: @platform_version_availability_spec,
string platform: string ref,
string version: string ref
);
@decl =
@captured_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
| @value_decl
;
#keyset[id]
decls( //dir=decl
int id: @decl ref,
int module: @module_decl_or_none ref
);
#keyset[id, index]
decl_members( //dir=decl
int id: @decl ref,
int index: int ref,
int member: @decl_or_none ref
);
@generic_context =
@abstract_function_decl
| @extension_decl
| @generic_type_decl
| @subscript_decl
;
#keyset[id, index]
generic_context_generic_type_params( //dir=decl
int id: @generic_context ref,
int index: int ref,
int generic_type_param: @generic_type_param_decl_or_none ref
);
captured_decls( //dir=decl
unique int id: @captured_decl,
int decl: @value_decl_or_none ref
);
#keyset[id]
captured_decl_is_direct( //dir=decl
int id: @captured_decl ref
);
#keyset[id]
captured_decl_is_escaping( //dir=decl
int id: @captured_decl ref
);
enum_case_decls( //dir=decl
unique int id: @enum_case_decl
);
#keyset[id, index]
enum_case_decl_elements( //dir=decl
int id: @enum_case_decl ref,
int index: int ref,
int element: @enum_element_decl_or_none ref
);
extension_decls( //dir=decl
unique int id: @extension_decl,
int extended_type_decl: @nominal_type_decl_or_none ref
);
#keyset[id, index]
extension_decl_protocols( //dir=decl
int id: @extension_decl ref,
int index: int ref,
int protocol: @protocol_decl_or_none ref
);
if_config_decls( //dir=decl
unique int id: @if_config_decl
);
#keyset[id, index]
if_config_decl_active_elements( //dir=decl
int id: @if_config_decl ref,
int index: int ref,
int active_element: @ast_node_or_none ref
);
import_decls( //dir=decl
unique int id: @import_decl
);
#keyset[id]
import_decl_is_exported( //dir=decl
int id: @import_decl ref
);
#keyset[id]
import_decl_imported_modules( //dir=decl
int id: @import_decl ref,
int imported_module: @module_decl_or_none ref
);
#keyset[id, index]
import_decl_declarations( //dir=decl
int id: @import_decl ref,
int index: int ref,
int declaration: @value_decl_or_none ref
);
missing_member_decls( //dir=decl
unique int id: @missing_member_decl,
string name: string ref
);
@operator_decl =
@infix_operator_decl
| @postfix_operator_decl
| @prefix_operator_decl
;
#keyset[id]
operator_decls( //dir=decl
int id: @operator_decl ref,
string name: string ref
);
pattern_binding_decls( //dir=decl
unique int id: @pattern_binding_decl
);
#keyset[id, index]
pattern_binding_decl_inits( //dir=decl
int id: @pattern_binding_decl ref,
int index: int ref,
int init: @expr_or_none ref
);
#keyset[id, index]
pattern_binding_decl_patterns( //dir=decl
int id: @pattern_binding_decl ref,
int index: int ref,
int pattern: @pattern_or_none ref
);
pound_diagnostic_decls( //dir=decl
unique int id: @pound_diagnostic_decl,
int kind: int ref,
int message: @string_literal_expr_or_none ref
);
precedence_group_decls( //dir=decl
unique int id: @precedence_group_decl
);
top_level_code_decls( //dir=decl
unique int id: @top_level_code_decl,
int body: @brace_stmt_or_none ref
);
@value_decl =
@abstract_function_decl
| @abstract_storage_decl
| @enum_element_decl
| @type_decl
;
#keyset[id]
value_decls( //dir=decl
int id: @value_decl ref,
int interface_type: @type_or_none ref
);
@abstract_function_decl =
@constructor_decl
| @destructor_decl
| @func_decl
;
@abstract_storage_decl =
@subscript_decl
| @var_decl
;
#keyset[id, index]
abstract_storage_decl_accessor_decls( //dir=decl
int id: @abstract_storage_decl ref,
int index: int ref,
int accessor_decl: @accessor_decl_or_none ref
);
enum_element_decls( //dir=decl
unique int id: @enum_element_decl,
string name: string ref
);
#keyset[id, index]
enum_element_decl_params( //dir=decl
int id: @enum_element_decl ref,
int index: int ref,
int param: @param_decl_or_none ref
);
infix_operator_decls( //dir=decl
unique int id: @infix_operator_decl
);
#keyset[id]
infix_operator_decl_precedence_groups( //dir=decl
int id: @infix_operator_decl ref,
int precedence_group: @precedence_group_decl_or_none ref
);
postfix_operator_decls( //dir=decl
unique int id: @postfix_operator_decl
);
prefix_operator_decls( //dir=decl
unique int id: @prefix_operator_decl
);
@type_decl =
@abstract_type_param_decl
| @generic_type_decl
| @module_decl
;
#keyset[id]
type_decls( //dir=decl
int id: @type_decl ref,
string name: string ref
);
#keyset[id, index]
type_decl_base_types( //dir=decl
int id: @type_decl ref,
int index: int ref,
int base_type: @type_or_none ref
);
@abstract_type_param_decl =
@associated_type_decl
| @generic_type_param_decl
;
constructor_decls( //dir=decl
unique int id: @constructor_decl
);
destructor_decls( //dir=decl
unique int id: @destructor_decl
);
@func_decl =
@accessor_decl
| @concrete_func_decl
;
@generic_type_decl =
@nominal_type_decl
| @opaque_type_decl
| @type_alias_decl
;
module_decls( //dir=decl
unique int id: @module_decl
);
#keyset[id]
module_decl_is_builtin_module( //dir=decl
int id: @module_decl ref
);
#keyset[id]
module_decl_is_system_module( //dir=decl
int id: @module_decl ref
);
#keyset[id, index]
module_decl_imported_modules( //dir=decl
int id: @module_decl ref,
int index: int ref,
int imported_module: @module_decl_or_none ref
);
#keyset[id, index]
module_decl_exported_modules( //dir=decl
int id: @module_decl ref,
int index: int ref,
int exported_module: @module_decl_or_none ref
);
subscript_decls( //dir=decl
unique int id: @subscript_decl,
int element_type: @type_or_none ref
);
#keyset[id, index]
subscript_decl_params( //dir=decl
int id: @subscript_decl ref,
int index: int ref,
int param: @param_decl_or_none ref
);
@var_decl =
@concrete_var_decl
| @param_decl
;
#keyset[id]
var_decls( //dir=decl
int id: @var_decl ref,
string name: string ref,
int type_: @type_or_none ref
);
#keyset[id]
var_decl_attached_property_wrapper_types( //dir=decl
int id: @var_decl ref,
int attached_property_wrapper_type: @type_or_none ref
);
#keyset[id]
var_decl_parent_patterns( //dir=decl
int id: @var_decl ref,
int parent_pattern: @pattern_or_none ref
);
#keyset[id]
var_decl_parent_initializers( //dir=decl
int id: @var_decl ref,
int parent_initializer: @expr_or_none ref
);
#keyset[id]
var_decl_property_wrapper_backing_var_bindings( //dir=decl
int id: @var_decl ref,
int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref
);
#keyset[id]
var_decl_property_wrapper_backing_vars( //dir=decl
int id: @var_decl ref,
int property_wrapper_backing_var: @var_decl_or_none ref
);
#keyset[id]
var_decl_property_wrapper_projection_var_bindings( //dir=decl
int id: @var_decl ref,
int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref
);
#keyset[id]
var_decl_property_wrapper_projection_vars( //dir=decl
int id: @var_decl ref,
int property_wrapper_projection_var: @var_decl_or_none ref
);
accessor_decls( //dir=decl
unique int id: @accessor_decl
);
#keyset[id]
accessor_decl_is_getter( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_setter( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_will_set( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_did_set( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_read( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_modify( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_unsafe_address( //dir=decl
int id: @accessor_decl ref
);
#keyset[id]
accessor_decl_is_unsafe_mutable_address( //dir=decl
int id: @accessor_decl ref
);
associated_type_decls( //dir=decl
unique int id: @associated_type_decl
);
concrete_func_decls( //dir=decl
unique int id: @concrete_func_decl
);
concrete_var_decls( //dir=decl
unique int id: @concrete_var_decl,
int introducer_int: int ref
);
generic_type_param_decls( //dir=decl
unique int id: @generic_type_param_decl
);
@nominal_type_decl =
@class_decl
| @enum_decl
| @protocol_decl
| @struct_decl
;
#keyset[id]
nominal_type_decls( //dir=decl
int id: @nominal_type_decl ref,
int type_: @type_or_none ref
);
opaque_type_decls( //dir=decl
unique int id: @opaque_type_decl,
int naming_declaration: @value_decl_or_none ref
);
#keyset[id, index]
opaque_type_decl_opaque_generic_params( //dir=decl
int id: @opaque_type_decl ref,
int index: int ref,
int opaque_generic_param: @generic_type_param_type_or_none ref
);
param_decls( //dir=decl
unique int id: @param_decl
);
#keyset[id]
param_decl_is_inout( //dir=decl
int id: @param_decl ref
);
#keyset[id]
param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl
int id: @param_decl ref,
int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref
);
#keyset[id]
param_decl_property_wrapper_local_wrapped_vars( //dir=decl
int id: @param_decl ref,
int property_wrapper_local_wrapped_var: @var_decl_or_none ref
);
type_alias_decls( //dir=decl
unique int id: @type_alias_decl
);
class_decls( //dir=decl
unique int id: @class_decl
);
enum_decls( //dir=decl
unique int id: @enum_decl
);
protocol_decls( //dir=decl
unique int id: @protocol_decl
);
struct_decls( //dir=decl
unique int id: @struct_decl
);
arguments( //dir=expr
unique int id: @argument,
string label: string ref,
int expr: @expr_or_none ref
);
@expr =
@abstract_closure_expr
| @any_try_expr
| @applied_property_wrapper_expr
| @apply_expr
| @assign_expr
| @bind_optional_expr
| @capture_list_expr
| @collection_expr
| @decl_ref_expr
| @default_argument_expr
| @discard_assignment_expr
| @dot_syntax_base_ignored_expr
| @dynamic_type_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
| @overloaded_decl_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
| @unresolved_decl_ref_expr
| @unresolved_dot_expr
| @unresolved_member_expr
| @unresolved_pattern_expr
| @unresolved_specialize_expr
| @vararg_expansion_expr
;
#keyset[id]
expr_types( //dir=expr
int id: @expr ref,
int type_: @type_or_none 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( //dir=expr
int id: @any_try_expr ref,
int sub_expr: @expr_or_none ref
);
applied_property_wrapper_exprs( //dir=expr
unique int id: @applied_property_wrapper_expr,
int kind: int ref,
int value: @expr_or_none ref,
int param: @param_decl_or_none ref
);
@apply_expr =
@binary_expr
| @call_expr
| @postfix_unary_expr
| @prefix_unary_expr
| @self_apply_expr
;
#keyset[id]
apply_exprs( //dir=expr
int id: @apply_expr ref,
int function: @expr_or_none ref
);
#keyset[id, index]
apply_expr_arguments( //dir=expr
int id: @apply_expr ref,
int index: int ref,
int argument: @argument_or_none ref
);
assign_exprs( //dir=expr
unique int id: @assign_expr,
int dest: @expr_or_none ref,
int source: @expr_or_none ref
);
bind_optional_exprs( //dir=expr
unique int id: @bind_optional_expr,
int sub_expr: @expr_or_none ref
);
capture_list_exprs( //dir=expr
unique int id: @capture_list_expr,
int closure_body: @closure_expr_or_none ref
);
#keyset[id, index]
capture_list_expr_binding_decls( //dir=expr
int id: @capture_list_expr ref,
int index: int ref,
int binding_decl: @pattern_binding_decl_or_none ref
);
@collection_expr =
@array_expr
| @dictionary_expr
;
decl_ref_exprs( //dir=expr
unique int id: @decl_ref_expr,
int decl: @decl_or_none ref
);
#keyset[id, index]
decl_ref_expr_replacement_types( //dir=expr
int id: @decl_ref_expr ref,
int index: int ref,
int replacement_type: @type_or_none ref
);
#keyset[id]
decl_ref_expr_has_direct_to_storage_semantics( //dir=expr
int id: @decl_ref_expr ref
);
#keyset[id]
decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr
int id: @decl_ref_expr ref
);
#keyset[id]
decl_ref_expr_has_ordinary_semantics( //dir=expr
int id: @decl_ref_expr ref
);
#keyset[id]
decl_ref_expr_has_distributed_thunk_semantics( //dir=expr
int id: @decl_ref_expr ref
);
default_argument_exprs( //dir=expr
unique int id: @default_argument_expr,
int param_decl: @param_decl_or_none ref,
int param_index: int ref
);
#keyset[id]
default_argument_expr_caller_side_defaults( //dir=expr
int id: @default_argument_expr ref,
int caller_side_default: @expr_or_none ref
);
discard_assignment_exprs( //dir=expr
unique int id: @discard_assignment_expr
);
dot_syntax_base_ignored_exprs( //dir=expr
unique int id: @dot_syntax_base_ignored_expr,
int qualifier: @expr_or_none ref,
int sub_expr: @expr_or_none ref
);
dynamic_type_exprs( //dir=expr
unique int id: @dynamic_type_expr,
int base: @expr_or_none ref
);
enum_is_case_exprs( //dir=expr
unique int id: @enum_is_case_expr,
int sub_expr: @expr_or_none ref,
int element: @enum_element_decl_or_none ref
);
error_exprs( //dir=expr
unique int id: @error_expr
);
@explicit_cast_expr =
@checked_cast_expr
| @coerce_expr
;
#keyset[id]
explicit_cast_exprs( //dir=expr
int id: @explicit_cast_expr ref,
int sub_expr: @expr_or_none ref
);
force_value_exprs( //dir=expr
unique int id: @force_value_expr,
int sub_expr: @expr_or_none ref
);
@identity_expr =
@await_expr
| @dot_self_expr
| @paren_expr
| @unresolved_member_chain_result_expr
;
#keyset[id]
identity_exprs( //dir=expr
int id: @identity_expr ref,
int sub_expr: @expr_or_none ref
);
if_exprs( //dir=expr
unique int id: @if_expr,
int condition: @expr_or_none ref,
int then_expr: @expr_or_none ref,
int else_expr: @expr_or_none ref
);
@implicit_conversion_expr =
@abi_safe_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( //dir=expr
int id: @implicit_conversion_expr ref,
int sub_expr: @expr_or_none ref
);
in_out_exprs( //dir=expr
unique int id: @in_out_expr,
int sub_expr: @expr_or_none ref
);
key_path_application_exprs( //dir=expr
unique int id: @key_path_application_expr,
int base: @expr_or_none ref,
int key_path: @expr_or_none ref
);
key_path_dot_exprs( //dir=expr
unique int id: @key_path_dot_expr
);
key_path_exprs( //dir=expr
unique int id: @key_path_expr
);
#keyset[id]
key_path_expr_roots( //dir=expr
int id: @key_path_expr ref,
int root: @type_repr_or_none ref
);
#keyset[id]
key_path_expr_parsed_paths( //dir=expr
int id: @key_path_expr ref,
int parsed_path: @expr_or_none ref
);
lazy_initializer_exprs( //dir=expr
unique int id: @lazy_initializer_expr,
int sub_expr: @expr_or_none 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
;
#keyset[id]
lookup_exprs( //dir=expr
int id: @lookup_expr ref,
int base: @expr_or_none ref
);
#keyset[id]
lookup_expr_members( //dir=expr
int id: @lookup_expr ref,
int member: @decl_or_none ref
);
make_temporarily_escapable_exprs( //dir=expr
unique int id: @make_temporarily_escapable_expr,
int escaping_closure: @opaque_value_expr_or_none ref,
int nonescaping_closure: @expr_or_none ref,
int sub_expr: @expr_or_none ref
);
obj_c_selector_exprs( //dir=expr
unique int id: @obj_c_selector_expr,
int sub_expr: @expr_or_none ref,
int method: @abstract_function_decl_or_none ref
);
one_way_exprs( //dir=expr
unique int id: @one_way_expr,
int sub_expr: @expr_or_none ref
);
opaque_value_exprs( //dir=expr
unique int id: @opaque_value_expr
);
open_existential_exprs( //dir=expr
unique int id: @open_existential_expr,
int sub_expr: @expr_or_none ref,
int existential: @expr_or_none ref,
int opaque_expr: @opaque_value_expr_or_none ref
);
optional_evaluation_exprs( //dir=expr
unique int id: @optional_evaluation_expr,
int sub_expr: @expr_or_none ref
);
other_constructor_decl_ref_exprs( //dir=expr
unique int id: @other_constructor_decl_ref_expr,
int constructor_decl: @constructor_decl_or_none ref
);
overloaded_decl_ref_exprs( //dir=expr
unique int id: @overloaded_decl_ref_expr
);
#keyset[id, index]
overloaded_decl_ref_expr_possible_declarations( //dir=expr
int id: @overloaded_decl_ref_expr ref,
int index: int ref,
int possible_declaration: @value_decl_or_none ref
);
property_wrapper_value_placeholder_exprs( //dir=expr
unique int id: @property_wrapper_value_placeholder_expr,
int placeholder: @opaque_value_expr_or_none ref
);
#keyset[id]
property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr
int id: @property_wrapper_value_placeholder_expr ref,
int wrapped_value: @expr_or_none ref
);
rebind_self_in_constructor_exprs( //dir=expr
unique int id: @rebind_self_in_constructor_expr,
int sub_expr: @expr_or_none ref,
int self: @var_decl_or_none ref
);
sequence_exprs( //dir=expr
unique int id: @sequence_expr
);
#keyset[id, index]
sequence_expr_elements( //dir=expr
int id: @sequence_expr ref,
int index: int ref,
int element: @expr_or_none ref
);
super_ref_exprs( //dir=expr
unique int id: @super_ref_expr,
int self: @var_decl_or_none ref
);
tap_exprs( //dir=expr
unique int id: @tap_expr,
int body: @brace_stmt_or_none ref,
int var: @var_decl_or_none ref
);
#keyset[id]
tap_expr_sub_exprs( //dir=expr
int id: @tap_expr ref,
int sub_expr: @expr_or_none ref
);
tuple_element_exprs( //dir=expr
unique int id: @tuple_element_expr,
int sub_expr: @expr_or_none ref,
int index: int ref
);
tuple_exprs( //dir=expr
unique int id: @tuple_expr
);
#keyset[id, index]
tuple_expr_elements( //dir=expr
int id: @tuple_expr ref,
int index: int ref,
int element: @expr_or_none ref
);
type_exprs( //dir=expr
unique int id: @type_expr
);
#keyset[id]
type_expr_type_reprs( //dir=expr
int id: @type_expr ref,
int type_repr: @type_repr_or_none ref
);
unresolved_decl_ref_exprs( //dir=expr
unique int id: @unresolved_decl_ref_expr
);
#keyset[id]
unresolved_decl_ref_expr_names( //dir=expr
int id: @unresolved_decl_ref_expr ref,
string name: string ref
);
unresolved_dot_exprs( //dir=expr
unique int id: @unresolved_dot_expr,
int base: @expr_or_none ref,
string name: string ref
);
unresolved_member_exprs( //dir=expr
unique int id: @unresolved_member_expr,
string name: string ref
);
unresolved_pattern_exprs( //dir=expr
unique int id: @unresolved_pattern_expr,
int sub_pattern: @pattern_or_none ref
);
unresolved_specialize_exprs( //dir=expr
unique int id: @unresolved_specialize_expr,
int sub_expr: @expr_or_none ref
);
vararg_expansion_exprs( //dir=expr
unique int id: @vararg_expansion_expr,
int sub_expr: @expr_or_none ref
);
abi_safe_conversion_exprs( //dir=expr
unique int id: @abi_safe_conversion_expr
);
any_hashable_erasure_exprs( //dir=expr
unique int id: @any_hashable_erasure_expr
);
archetype_to_super_exprs( //dir=expr
unique int id: @archetype_to_super_expr
);
array_exprs( //dir=expr
unique int id: @array_expr
);
#keyset[id, index]
array_expr_elements( //dir=expr
int id: @array_expr ref,
int index: int ref,
int element: @expr_or_none ref
);
array_to_pointer_exprs( //dir=expr
unique int id: @array_to_pointer_expr
);
auto_closure_exprs( //dir=expr
unique int id: @auto_closure_expr
);
await_exprs( //dir=expr
unique int id: @await_expr
);
binary_exprs( //dir=expr
unique int id: @binary_expr
);
bridge_from_obj_c_exprs( //dir=expr
unique int id: @bridge_from_obj_c_expr
);
bridge_to_obj_c_exprs( //dir=expr
unique int id: @bridge_to_obj_c_expr
);
@builtin_literal_expr =
@boolean_literal_expr
| @magic_identifier_literal_expr
| @number_literal_expr
| @string_literal_expr
;
call_exprs( //dir=expr
unique int id: @call_expr
);
@checked_cast_expr =
@conditional_checked_cast_expr
| @forced_checked_cast_expr
| @is_expr
;
class_metatype_to_object_exprs( //dir=expr
unique int id: @class_metatype_to_object_expr
);
closure_exprs( //dir=expr
unique int id: @closure_expr
);
coerce_exprs( //dir=expr
unique int id: @coerce_expr
);
collection_upcast_conversion_exprs( //dir=expr
unique int id: @collection_upcast_conversion_expr
);
conditional_bridge_from_obj_c_exprs( //dir=expr
unique int id: @conditional_bridge_from_obj_c_expr
);
covariant_function_conversion_exprs( //dir=expr
unique int id: @covariant_function_conversion_expr
);
covariant_return_conversion_exprs( //dir=expr
unique int id: @covariant_return_conversion_expr
);
derived_to_base_exprs( //dir=expr
unique int id: @derived_to_base_expr
);
destructure_tuple_exprs( //dir=expr
unique int id: @destructure_tuple_expr
);
dictionary_exprs( //dir=expr
unique int id: @dictionary_expr
);
#keyset[id, index]
dictionary_expr_elements( //dir=expr
int id: @dictionary_expr ref,
int index: int ref,
int element: @expr_or_none ref
);
differentiable_function_exprs( //dir=expr
unique int id: @differentiable_function_expr
);
differentiable_function_extract_original_exprs( //dir=expr
unique int id: @differentiable_function_extract_original_expr
);
dot_self_exprs( //dir=expr
unique int id: @dot_self_expr
);
@dynamic_lookup_expr =
@dynamic_member_ref_expr
| @dynamic_subscript_expr
;
erasure_exprs( //dir=expr
unique int id: @erasure_expr
);
existential_metatype_to_object_exprs( //dir=expr
unique int id: @existential_metatype_to_object_expr
);
force_try_exprs( //dir=expr
unique int id: @force_try_expr
);
foreign_object_conversion_exprs( //dir=expr
unique int id: @foreign_object_conversion_expr
);
function_conversion_exprs( //dir=expr
unique int id: @function_conversion_expr
);
in_out_to_pointer_exprs( //dir=expr
unique int id: @in_out_to_pointer_expr
);
inject_into_optional_exprs( //dir=expr
unique int id: @inject_into_optional_expr
);
interpolated_string_literal_exprs( //dir=expr
unique int id: @interpolated_string_literal_expr
);
#keyset[id]
interpolated_string_literal_expr_interpolation_exprs( //dir=expr
int id: @interpolated_string_literal_expr ref,
int interpolation_expr: @opaque_value_expr_or_none ref
);
#keyset[id]
interpolated_string_literal_expr_interpolation_count_exprs( //dir=expr
int id: @interpolated_string_literal_expr ref,
int interpolation_count_expr: @expr_or_none ref
);
#keyset[id]
interpolated_string_literal_expr_literal_capacity_exprs( //dir=expr
int id: @interpolated_string_literal_expr ref,
int literal_capacity_expr: @expr_or_none ref
);
#keyset[id]
interpolated_string_literal_expr_appending_exprs( //dir=expr
int id: @interpolated_string_literal_expr ref,
int appending_expr: @tap_expr_or_none ref
);
linear_function_exprs( //dir=expr
unique int id: @linear_function_expr
);
linear_function_extract_original_exprs( //dir=expr
unique int id: @linear_function_extract_original_expr
);
linear_to_differentiable_function_exprs( //dir=expr
unique int id: @linear_to_differentiable_function_expr
);
load_exprs( //dir=expr
unique int id: @load_expr
);
member_ref_exprs( //dir=expr
unique int id: @member_ref_expr
);
#keyset[id]
member_ref_expr_has_direct_to_storage_semantics( //dir=expr
int id: @member_ref_expr ref
);
#keyset[id]
member_ref_expr_has_direct_to_implementation_semantics( //dir=expr
int id: @member_ref_expr ref
);
#keyset[id]
member_ref_expr_has_ordinary_semantics( //dir=expr
int id: @member_ref_expr ref
);
#keyset[id]
member_ref_expr_has_distributed_thunk_semantics( //dir=expr
int id: @member_ref_expr ref
);
metatype_conversion_exprs( //dir=expr
unique int id: @metatype_conversion_expr
);
nil_literal_exprs( //dir=expr
unique int id: @nil_literal_expr
);
object_literal_exprs( //dir=expr
unique int id: @object_literal_expr,
int kind: int ref
);
#keyset[id, index]
object_literal_expr_arguments( //dir=expr
int id: @object_literal_expr ref,
int index: int ref,
int argument: @argument_or_none ref
);
optional_try_exprs( //dir=expr
unique int id: @optional_try_expr
);
paren_exprs( //dir=expr
unique int id: @paren_expr
);
pointer_to_pointer_exprs( //dir=expr
unique int id: @pointer_to_pointer_expr
);
postfix_unary_exprs( //dir=expr
unique int id: @postfix_unary_expr
);
prefix_unary_exprs( //dir=expr
unique int id: @prefix_unary_expr
);
protocol_metatype_to_object_exprs( //dir=expr
unique int id: @protocol_metatype_to_object_expr
);
regex_literal_exprs( //dir=expr
unique int id: @regex_literal_expr,
string pattern: string ref,
int version: int ref
);
@self_apply_expr =
@constructor_ref_call_expr
| @dot_syntax_call_expr
;
#keyset[id]
self_apply_exprs( //dir=expr
int id: @self_apply_expr ref,
int base: @expr_or_none ref
);
string_to_pointer_exprs( //dir=expr
unique int id: @string_to_pointer_expr
);
subscript_exprs( //dir=expr
unique int id: @subscript_expr
);
#keyset[id, index]
subscript_expr_arguments( //dir=expr
int id: @subscript_expr ref,
int index: int ref,
int argument: @argument_or_none ref
);
#keyset[id]
subscript_expr_has_direct_to_storage_semantics( //dir=expr
int id: @subscript_expr ref
);
#keyset[id]
subscript_expr_has_direct_to_implementation_semantics( //dir=expr
int id: @subscript_expr ref
);
#keyset[id]
subscript_expr_has_ordinary_semantics( //dir=expr
int id: @subscript_expr ref
);
#keyset[id]
subscript_expr_has_distributed_thunk_semantics( //dir=expr
int id: @subscript_expr ref
);
try_exprs( //dir=expr
unique int id: @try_expr
);
underlying_to_opaque_exprs( //dir=expr
unique int id: @underlying_to_opaque_expr
);
unevaluated_instance_exprs( //dir=expr
unique int id: @unevaluated_instance_expr
);
unresolved_member_chain_result_exprs( //dir=expr
unique int id: @unresolved_member_chain_result_expr
);
unresolved_type_conversion_exprs( //dir=expr
unique int id: @unresolved_type_conversion_expr
);
boolean_literal_exprs( //dir=expr
unique int id: @boolean_literal_expr,
boolean value: boolean ref
);
conditional_checked_cast_exprs( //dir=expr
unique int id: @conditional_checked_cast_expr
);
constructor_ref_call_exprs( //dir=expr
unique int id: @constructor_ref_call_expr
);
dot_syntax_call_exprs( //dir=expr
unique int id: @dot_syntax_call_expr
);
dynamic_member_ref_exprs( //dir=expr
unique int id: @dynamic_member_ref_expr
);
dynamic_subscript_exprs( //dir=expr
unique int id: @dynamic_subscript_expr
);
forced_checked_cast_exprs( //dir=expr
unique int id: @forced_checked_cast_expr
);
is_exprs( //dir=expr
unique int id: @is_expr
);
magic_identifier_literal_exprs( //dir=expr
unique int id: @magic_identifier_literal_expr,
string kind: string ref
);
@number_literal_expr =
@float_literal_expr
| @integer_literal_expr
;
string_literal_exprs( //dir=expr
unique int id: @string_literal_expr,
string value: string ref
);
float_literal_exprs( //dir=expr
unique int id: @float_literal_expr,
string string_value: string ref
);
integer_literal_exprs( //dir=expr
unique int id: @integer_literal_expr,
string string_value: string 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
;
any_patterns( //dir=pattern
unique int id: @any_pattern
);
binding_patterns( //dir=pattern
unique int id: @binding_pattern,
int sub_pattern: @pattern_or_none ref
);
bool_patterns( //dir=pattern
unique int id: @bool_pattern,
boolean value: boolean ref
);
enum_element_patterns( //dir=pattern
unique int id: @enum_element_pattern,
int element: @enum_element_decl_or_none ref
);
#keyset[id]
enum_element_pattern_sub_patterns( //dir=pattern
int id: @enum_element_pattern ref,
int sub_pattern: @pattern_or_none ref
);
expr_patterns( //dir=pattern
unique int id: @expr_pattern,
int sub_expr: @expr_or_none ref
);
is_patterns( //dir=pattern
unique int id: @is_pattern
);
#keyset[id]
is_pattern_cast_type_reprs( //dir=pattern
int id: @is_pattern ref,
int cast_type_repr: @type_repr_or_none ref
);
#keyset[id]
is_pattern_sub_patterns( //dir=pattern
int id: @is_pattern ref,
int sub_pattern: @pattern_or_none ref
);
named_patterns( //dir=pattern
unique int id: @named_pattern,
string name: string ref
);
optional_some_patterns( //dir=pattern
unique int id: @optional_some_pattern,
int sub_pattern: @pattern_or_none ref
);
paren_patterns( //dir=pattern
unique int id: @paren_pattern,
int sub_pattern: @pattern_or_none ref
);
tuple_patterns( //dir=pattern
unique int id: @tuple_pattern
);
#keyset[id, index]
tuple_pattern_elements( //dir=pattern
int id: @tuple_pattern ref,
int index: int ref,
int element: @pattern_or_none ref
);
typed_patterns( //dir=pattern
unique int id: @typed_pattern,
int sub_pattern: @pattern_or_none ref
);
#keyset[id]
typed_pattern_type_reprs( //dir=pattern
int id: @typed_pattern ref,
int type_repr: @type_repr_or_none ref
);
case_label_items( //dir=stmt
unique int id: @case_label_item,
int pattern: @pattern_or_none ref
);
#keyset[id]
case_label_item_guards( //dir=stmt
int id: @case_label_item ref,
int guard: @expr_or_none ref
);
condition_elements( //dir=stmt
unique int id: @condition_element
);
#keyset[id]
condition_element_booleans( //dir=stmt
int id: @condition_element ref,
int boolean_: @expr_or_none ref
);
#keyset[id]
condition_element_patterns( //dir=stmt
int id: @condition_element ref,
int pattern: @pattern_or_none ref
);
#keyset[id]
condition_element_initializers( //dir=stmt
int id: @condition_element ref,
int initializer: @expr_or_none ref
);
#keyset[id]
condition_element_availabilities( //dir=stmt
int id: @condition_element ref,
int availability: @availability_info_or_none ref
);
@stmt =
@brace_stmt
| @break_stmt
| @case_stmt
| @continue_stmt
| @defer_stmt
| @fail_stmt
| @fallthrough_stmt
| @labeled_stmt
| @pound_assert_stmt
| @return_stmt
| @throw_stmt
| @yield_stmt
;
stmt_conditions( //dir=stmt
unique int id: @stmt_condition
);
#keyset[id, index]
stmt_condition_elements( //dir=stmt
int id: @stmt_condition ref,
int index: int ref,
int element: @condition_element_or_none ref
);
brace_stmts( //dir=stmt
unique int id: @brace_stmt
);
#keyset[id, index]
brace_stmt_elements( //dir=stmt
int id: @brace_stmt ref,
int index: int ref,
int element: @ast_node_or_none ref
);
break_stmts( //dir=stmt
unique int id: @break_stmt
);
#keyset[id]
break_stmt_target_names( //dir=stmt
int id: @break_stmt ref,
string target_name: string ref
);
#keyset[id]
break_stmt_targets( //dir=stmt
int id: @break_stmt ref,
int target: @stmt_or_none ref
);
case_stmts( //dir=stmt
unique int id: @case_stmt,
int body: @stmt_or_none ref
);
#keyset[id, index]
case_stmt_labels( //dir=stmt
int id: @case_stmt ref,
int index: int ref,
int label: @case_label_item_or_none ref
);
#keyset[id, index]
case_stmt_variables( //dir=stmt
int id: @case_stmt ref,
int index: int ref,
int variable: @var_decl_or_none ref
);
continue_stmts( //dir=stmt
unique int id: @continue_stmt
);
#keyset[id]
continue_stmt_target_names( //dir=stmt
int id: @continue_stmt ref,
string target_name: string ref
);
#keyset[id]
continue_stmt_targets( //dir=stmt
int id: @continue_stmt ref,
int target: @stmt_or_none ref
);
defer_stmts( //dir=stmt
unique int id: @defer_stmt,
int body: @brace_stmt_or_none ref
);
fail_stmts( //dir=stmt
unique int id: @fail_stmt
);
fallthrough_stmts( //dir=stmt
unique int id: @fallthrough_stmt,
int fallthrough_source: @case_stmt_or_none ref,
int fallthrough_dest: @case_stmt_or_none ref
);
@labeled_stmt =
@do_catch_stmt
| @do_stmt
| @for_each_stmt
| @labeled_conditional_stmt
| @repeat_while_stmt
| @switch_stmt
;
#keyset[id]
labeled_stmt_labels( //dir=stmt
int id: @labeled_stmt ref,
string label: string ref
);
pound_assert_stmts( //dir=stmt
unique int id: @pound_assert_stmt,
int condition: @expr_or_none ref,
string message: string ref
);
return_stmts( //dir=stmt
unique int id: @return_stmt
);
#keyset[id]
return_stmt_results( //dir=stmt
int id: @return_stmt ref,
int result: @expr_or_none ref
);
throw_stmts( //dir=stmt
unique int id: @throw_stmt,
int sub_expr: @expr_or_none ref
);
yield_stmts( //dir=stmt
unique int id: @yield_stmt
);
#keyset[id, index]
yield_stmt_results( //dir=stmt
int id: @yield_stmt ref,
int index: int ref,
int result: @expr_or_none ref
);
do_catch_stmts( //dir=stmt
unique int id: @do_catch_stmt,
int body: @stmt_or_none ref
);
#keyset[id, index]
do_catch_stmt_catches( //dir=stmt
int id: @do_catch_stmt ref,
int index: int ref,
int catch: @case_stmt_or_none ref
);
do_stmts( //dir=stmt
unique int id: @do_stmt,
int body: @brace_stmt_or_none ref
);
for_each_stmts( //dir=stmt
unique int id: @for_each_stmt,
int pattern: @pattern_or_none ref,
int sequence: @expr_or_none ref,
int body: @brace_stmt_or_none ref
);
#keyset[id]
for_each_stmt_wheres( //dir=stmt
int id: @for_each_stmt ref,
int where: @expr_or_none ref
);
@labeled_conditional_stmt =
@guard_stmt
| @if_stmt
| @while_stmt
;
#keyset[id]
labeled_conditional_stmts( //dir=stmt
int id: @labeled_conditional_stmt ref,
int condition: @stmt_condition_or_none ref
);
repeat_while_stmts( //dir=stmt
unique int id: @repeat_while_stmt,
int condition: @expr_or_none ref,
int body: @stmt_or_none ref
);
switch_stmts( //dir=stmt
unique int id: @switch_stmt,
int expr: @expr_or_none ref
);
#keyset[id, index]
switch_stmt_cases( //dir=stmt
int id: @switch_stmt ref,
int index: int ref,
int case_: @case_stmt_or_none ref
);
guard_stmts( //dir=stmt
unique int id: @guard_stmt,
int body: @brace_stmt_or_none ref
);
if_stmts( //dir=stmt
unique int id: @if_stmt,
int then: @stmt_or_none ref
);
#keyset[id]
if_stmt_elses( //dir=stmt
int id: @if_stmt ref,
int else: @stmt_or_none ref
);
while_stmts( //dir=stmt
unique int id: @while_stmt,
int body: @stmt_or_none 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
| @parameterized_protocol_type
| @protocol_composition_type
| @reference_storage_type
| @substitutable_type
| @sugar_type
| @tuple_type
| @unresolved_type
;
#keyset[id]
types( //dir=type
int id: @type ref,
string name: string ref,
int canonical_type: @type_or_none ref
);
type_reprs( //dir=type
unique int id: @type_repr,
int type_: @type_or_none ref
);
@any_function_type =
@function_type
| @generic_function_type
;
#keyset[id]
any_function_types( //dir=type
int id: @any_function_type ref,
int result: @type_or_none ref
);
#keyset[id, index]
any_function_type_param_types( //dir=type
int id: @any_function_type ref,
int index: int ref,
int param_type: @type_or_none ref
);
#keyset[id]
any_function_type_is_throwing( //dir=type
int id: @any_function_type ref
);
#keyset[id]
any_function_type_is_async( //dir=type
int id: @any_function_type ref
);
@any_generic_type =
@nominal_or_bound_generic_nominal_type
| @unbound_generic_type
;
#keyset[id]
any_generic_types( //dir=type
int id: @any_generic_type ref,
int declaration: @generic_type_decl_or_none ref
);
#keyset[id]
any_generic_type_parents( //dir=type
int id: @any_generic_type ref,
int parent: @type_or_none 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( //dir=type
unique int id: @dependent_member_type,
int base_type: @type_or_none ref,
int associated_type_decl: @associated_type_decl_or_none ref
);
dynamic_self_types( //dir=type
unique int id: @dynamic_self_type,
int static_self_type: @type_or_none ref
);
error_types( //dir=type
unique int id: @error_type
);
existential_types( //dir=type
unique int id: @existential_type,
int constraint: @type_or_none ref
);
in_out_types( //dir=type
unique int id: @in_out_type,
int object_type: @type_or_none ref
);
l_value_types( //dir=type
unique int id: @l_value_type,
int object_type: @type_or_none ref
);
module_types( //dir=type
unique int id: @module_type,
int module: @module_decl_or_none ref
);
parameterized_protocol_types( //dir=type
unique int id: @parameterized_protocol_type,
int base: @protocol_type_or_none ref
);
#keyset[id, index]
parameterized_protocol_type_args( //dir=type
int id: @parameterized_protocol_type ref,
int index: int ref,
int arg: @type_or_none ref
);
protocol_composition_types( //dir=type
unique int id: @protocol_composition_type
);
#keyset[id, index]
protocol_composition_type_members( //dir=type
int id: @protocol_composition_type ref,
int index: int ref,
int member: @type_or_none ref
);
@reference_storage_type =
@unmanaged_storage_type
| @unowned_storage_type
| @weak_storage_type
;
#keyset[id]
reference_storage_types( //dir=type
int id: @reference_storage_type ref,
int referent_type: @type_or_none ref
);
@substitutable_type =
@archetype_type
| @generic_type_param_type
;
@sugar_type =
@paren_type
| @syntax_sugar_type
| @type_alias_type
;
tuple_types( //dir=type
unique int id: @tuple_type
);
#keyset[id, index]
tuple_type_types( //dir=type
int id: @tuple_type ref,
int index: int ref,
int type_: @type_or_none ref
);
#keyset[id, index]
tuple_type_names( //dir=type
int id: @tuple_type ref,
int index: int ref,
string name: string ref
);
unresolved_types( //dir=type
unique int id: @unresolved_type
);
@any_builtin_integer_type =
@builtin_integer_literal_type
| @builtin_integer_type
;
@archetype_type =
@opaque_type_archetype_type
| @opened_archetype_type
| @primary_archetype_type
;
#keyset[id]
archetype_types( //dir=type
int id: @archetype_type ref,
int interface_type: @type_or_none ref
);
#keyset[id]
archetype_type_superclasses( //dir=type
int id: @archetype_type ref,
int superclass: @type_or_none ref
);
#keyset[id, index]
archetype_type_protocols( //dir=type
int id: @archetype_type ref,
int index: int ref,
int protocol: @protocol_decl_or_none ref
);
builtin_bridge_object_types( //dir=type
unique int id: @builtin_bridge_object_type
);
builtin_default_actor_storage_types( //dir=type
unique int id: @builtin_default_actor_storage_type
);
builtin_executor_types( //dir=type
unique int id: @builtin_executor_type
);
builtin_float_types( //dir=type
unique int id: @builtin_float_type
);
builtin_job_types( //dir=type
unique int id: @builtin_job_type
);
builtin_native_object_types( //dir=type
unique int id: @builtin_native_object_type
);
builtin_raw_pointer_types( //dir=type
unique int id: @builtin_raw_pointer_type
);
builtin_raw_unsafe_continuation_types( //dir=type
unique int id: @builtin_raw_unsafe_continuation_type
);
builtin_unsafe_value_buffer_types( //dir=type
unique int id: @builtin_unsafe_value_buffer_type
);
builtin_vector_types( //dir=type
unique int id: @builtin_vector_type
);
existential_metatype_types( //dir=type
unique int id: @existential_metatype_type
);
function_types( //dir=type
unique int id: @function_type
);
generic_function_types( //dir=type
unique int id: @generic_function_type
);
#keyset[id, index]
generic_function_type_generic_params( //dir=type
int id: @generic_function_type ref,
int index: int ref,
int generic_param: @generic_type_param_type_or_none ref
);
generic_type_param_types( //dir=type
unique int id: @generic_type_param_type
);
metatype_types( //dir=type
unique int id: @metatype_type
);
@nominal_or_bound_generic_nominal_type =
@bound_generic_type
| @nominal_type
;
paren_types( //dir=type
unique int id: @paren_type,
int type_: @type_or_none ref
);
@syntax_sugar_type =
@dictionary_type
| @unary_syntax_sugar_type
;
type_alias_types( //dir=type
unique int id: @type_alias_type,
int decl: @type_alias_decl_or_none ref
);
unbound_generic_types( //dir=type
unique int id: @unbound_generic_type
);
unmanaged_storage_types( //dir=type
unique int id: @unmanaged_storage_type
);
unowned_storage_types( //dir=type
unique int id: @unowned_storage_type
);
weak_storage_types( //dir=type
unique int id: @weak_storage_type
);
@bound_generic_type =
@bound_generic_class_type
| @bound_generic_enum_type
| @bound_generic_struct_type
;
#keyset[id, index]
bound_generic_type_arg_types( //dir=type
int id: @bound_generic_type ref,
int index: int ref,
int arg_type: @type_or_none ref
);
builtin_integer_literal_types( //dir=type
unique int id: @builtin_integer_literal_type
);
builtin_integer_types( //dir=type
unique int id: @builtin_integer_type
);
#keyset[id]
builtin_integer_type_widths( //dir=type
int id: @builtin_integer_type ref,
int width: int ref
);
dictionary_types( //dir=type
unique int id: @dictionary_type,
int key_type: @type_or_none ref,
int value_type: @type_or_none ref
);
@nominal_type =
@class_type
| @enum_type
| @protocol_type
| @struct_type
;
opaque_type_archetype_types( //dir=type
unique int id: @opaque_type_archetype_type,
int declaration: @opaque_type_decl_or_none ref
);
opened_archetype_types( //dir=type
unique int id: @opened_archetype_type
);
primary_archetype_types( //dir=type
unique int id: @primary_archetype_type
);
@unary_syntax_sugar_type =
@array_slice_type
| @optional_type
| @variadic_sequence_type
;
#keyset[id]
unary_syntax_sugar_types( //dir=type
int id: @unary_syntax_sugar_type ref,
int base_type: @type_or_none ref
);
array_slice_types( //dir=type
unique int id: @array_slice_type
);
bound_generic_class_types( //dir=type
unique int id: @bound_generic_class_type
);
bound_generic_enum_types( //dir=type
unique int id: @bound_generic_enum_type
);
bound_generic_struct_types( //dir=type
unique int id: @bound_generic_struct_type
);
class_types( //dir=type
unique int id: @class_type
);
enum_types( //dir=type
unique int id: @enum_type
);
optional_types( //dir=type
unique int id: @optional_type
);
protocol_types( //dir=type
unique int id: @protocol_type
);
struct_types( //dir=type
unique int id: @struct_type
);
variadic_sequence_types( //dir=type
unique int id: @variadic_sequence_type
);
@abstract_function_decl_or_none =
@abstract_function_decl
| @unspecified_element
;
@accessor_decl_or_none =
@accessor_decl
| @unspecified_element
;
@argument_or_none =
@argument
| @unspecified_element
;
@associated_type_decl_or_none =
@associated_type_decl
| @unspecified_element
;
@ast_node_or_none =
@ast_node
| @unspecified_element
;
@availability_info_or_none =
@availability_info
| @unspecified_element
;
@availability_spec_or_none =
@availability_spec
| @unspecified_element
;
@brace_stmt_or_none =
@brace_stmt
| @unspecified_element
;
@captured_decl_or_none =
@captured_decl
| @unspecified_element
;
@case_label_item_or_none =
@case_label_item
| @unspecified_element
;
@case_stmt_or_none =
@case_stmt
| @unspecified_element
;
@closure_expr_or_none =
@closure_expr
| @unspecified_element
;
@condition_element_or_none =
@condition_element
| @unspecified_element
;
@constructor_decl_or_none =
@constructor_decl
| @unspecified_element
;
@decl_or_none =
@decl
| @unspecified_element
;
@enum_element_decl_or_none =
@enum_element_decl
| @unspecified_element
;
@expr_or_none =
@expr
| @unspecified_element
;
@file_or_none =
@file
| @unspecified_element
;
@generic_type_decl_or_none =
@generic_type_decl
| @unspecified_element
;
@generic_type_param_decl_or_none =
@generic_type_param_decl
| @unspecified_element
;
@generic_type_param_type_or_none =
@generic_type_param_type
| @unspecified_element
;
@location_or_none =
@location
| @unspecified_element
;
@module_decl_or_none =
@module_decl
| @unspecified_element
;
@nominal_type_decl_or_none =
@nominal_type_decl
| @unspecified_element
;
@opaque_type_decl_or_none =
@opaque_type_decl
| @unspecified_element
;
@opaque_value_expr_or_none =
@opaque_value_expr
| @unspecified_element
;
@param_decl_or_none =
@param_decl
| @unspecified_element
;
@pattern_or_none =
@pattern
| @unspecified_element
;
@pattern_binding_decl_or_none =
@pattern_binding_decl
| @unspecified_element
;
@precedence_group_decl_or_none =
@precedence_group_decl
| @unspecified_element
;
@protocol_decl_or_none =
@protocol_decl
| @unspecified_element
;
@protocol_type_or_none =
@protocol_type
| @unspecified_element
;
@stmt_or_none =
@stmt
| @unspecified_element
;
@stmt_condition_or_none =
@stmt_condition
| @unspecified_element
;
@string_literal_expr_or_none =
@string_literal_expr
| @unspecified_element
;
@tap_expr_or_none =
@tap_expr
| @unspecified_element
;
@type_or_none =
@type
| @unspecified_element
;
@type_alias_decl_or_none =
@type_alias_decl
| @unspecified_element
;
@type_repr_or_none =
@type_repr
| @unspecified_element
;
@value_decl_or_none =
@unspecified_element
| @value_decl
;
@var_decl_or_none =
@unspecified_element
| @var_decl
;