// generated by codegen/codegen.py, do not edit // from prefix.dbscheme /** * The source location of the snapshot. */ sourceLocationPrefix( string prefix: string ref ); // from schema.py @element = @file | @generic_context | @locatable | @location | @type ; #keyset[id] element_is_unknown( int id: @element ref ); @file = @db_file ; #keyset[id] files( int id: @file ref, string name: string ref ); #keyset[id] file_is_successfully_extracted( int id: @file 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 | @callable | @case_label_item | @condition_element | @decl | @expr | @key_path_component | @macro_role | @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 ; @callable = @closure_expr | @function ; #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 ); key_path_components( unique int id: @key_path_component, int kind: int ref, int component_type: @type_or_none ref ); #keyset[id, index] key_path_component_subscript_arguments( int id: @key_path_component ref, int index: int ref, int subscript_argument: @argument_or_none ref ); #keyset[id] key_path_component_tuple_indices( int id: @key_path_component ref, int tuple_index: int ref ); #keyset[id] key_path_component_decl_refs( int id: @key_path_component ref, int decl_ref: @value_decl_or_none ref ); macro_roles( unique int id: @macro_role, int kind: int ref, int macro_syntax: int ref ); #keyset[id, index] macro_role_conformances( int id: @macro_role ref, int index: int ref, int conformance: @type_expr_or_none ref ); #keyset[id, index] macro_role_names( int id: @macro_role ref, int index: int ref, string name: string ref ); 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 ); #keyset[id, index] unspecified_element_children( int id: @unspecified_element ref, int index: int ref, int child: @ast_node_or_none 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 = @extension_decl | @function | @generic_type_decl | @macro_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_storage_decl | @enum_element_decl | @function | @macro_decl | @type_decl ; #keyset[id] value_decls( //dir=decl int id: @value_decl ref, int interface_type: @type_or_none ref ); @abstract_storage_decl = @subscript_decl | @var_decl ; #keyset[id, index] abstract_storage_decl_accessors( //dir=decl int id: @abstract_storage_decl ref, int index: int ref, int accessor: @accessor_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 ); @function = @accessor_or_named_function | @deinitializer | @initializer ; 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 ); macro_decls( //dir=decl unique int id: @macro_decl, string name: string ref ); #keyset[id, index] macro_decl_parameters( //dir=decl int id: @macro_decl ref, int index: int ref, int parameter: @param_decl_or_none ref ); #keyset[id, index] macro_decl_roles( //dir=decl int id: @macro_decl ref, int index: int ref, int role: @macro_role_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_inherited_types( //dir=decl int id: @type_decl ref, int index: int ref, int inherited_type: @type_or_none ref ); @abstract_type_param_decl = @associated_type_decl | @generic_type_param_decl ; @accessor_or_named_function = @accessor | @named_function ; deinitializers( //dir=decl unique int id: @deinitializer ); @generic_type_decl = @nominal_type_decl | @opaque_type_decl | @type_alias_decl ; initializers( //dir=decl unique int id: @initializer ); 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 ); module_decl_imported_modules( //dir=decl int id: @module_decl ref, int imported_module: @module_decl_or_none ref ); module_decl_exported_modules( //dir=decl int id: @module_decl 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 ); accessors( //dir=decl unique int id: @accessor ); #keyset[id] accessor_is_getter( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_setter( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_will_set( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_did_set( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_read( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_modify( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_unsafe_address( //dir=decl int id: @accessor ref ); #keyset[id] accessor_is_unsafe_mutable_address( //dir=decl int id: @accessor ref ); associated_type_decls( //dir=decl unique int id: @associated_type_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 ); named_functions( //dir=decl unique int id: @named_function ); @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, int aliased_type: @type_or_none ref ); 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 = @any_try_expr | @applied_property_wrapper_expr | @apply_expr | @assign_expr | @bind_optional_expr | @capture_list_expr | @closure_expr | @collection_expr | @consume_expr | @copy_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_initialization_expr | @literal_expr | @lookup_expr | @make_temporarily_escapable_expr | @materialize_pack_expr | @obj_c_selector_expr | @one_way_expr | @opaque_value_expr | @open_existential_expr | @optional_evaluation_expr | @other_initializer_ref_expr | @overloaded_decl_ref_expr | @pack_element_expr | @pack_expansion_expr | @property_wrapper_value_placeholder_expr | @rebind_self_in_initializer_expr | @sequence_expr | @single_value_stmt_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 ); @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 ); @closure_expr = @auto_closure_expr | @explicit_closure_expr ; @collection_expr = @array_expr | @dictionary_expr ; consume_exprs( //dir=expr unique int id: @consume_expr, int sub_expr: @expr_or_none ref ); copy_exprs( //dir=expr unique int id: @copy_expr, int sub_expr: @expr_or_none ref ); 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 | @borrow_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, index] key_path_expr_components( //dir=expr int id: @key_path_expr ref, int index: int ref, int component: @key_path_component_or_none ref ); lazy_initialization_exprs( //dir=expr unique int id: @lazy_initialization_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 ); materialize_pack_exprs( //dir=expr unique int id: @materialize_pack_expr, 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: @function_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_initializer_ref_exprs( //dir=expr unique int id: @other_initializer_ref_expr, int initializer: @initializer_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 ); pack_element_exprs( //dir=expr unique int id: @pack_element_expr, int sub_expr: @expr_or_none ref ); pack_expansion_exprs( //dir=expr unique int id: @pack_expansion_expr, int pattern_expr: @expr_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_initializer_exprs( //dir=expr unique int id: @rebind_self_in_initializer_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 ); single_value_stmt_exprs( //dir=expr unique int id: @single_value_stmt_expr, int stmt: @stmt_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 ); borrow_exprs( //dir=expr unique int id: @borrow_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 ); 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 ); explicit_closure_exprs( //dir=expr unique int id: @explicit_closure_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_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 = @dot_syntax_call_expr | @initializer_ref_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 ); 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 ); initializer_ref_call_exprs( //dir=expr unique int id: @initializer_ref_call_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 ; #keyset[id] pattern_types( //dir=pattern int id: @pattern ref, int type_: @type_or_none ref ); 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, int var_decl: @var_decl_or_none 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 | @discard_stmt | @fail_stmt | @fallthrough_stmt | @labeled_stmt | @pound_assert_stmt | @return_stmt | @then_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 ); discard_stmts( //dir=stmt unique int id: @discard_stmt, int sub_expr: @expr_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 ); then_stmts( //dir=stmt unique int id: @then_stmt, 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 body: @brace_stmt_or_none ref ); #keyset[id, index] for_each_stmt_variables( //dir=stmt int id: @for_each_stmt ref, int index: int ref, int variable: @var_decl_or_none ref ); #keyset[id] for_each_stmt_wheres( //dir=stmt int id: @for_each_stmt ref, int where: @expr_or_none ref ); #keyset[id] for_each_stmt_iterator_vars( //dir=stmt int id: @for_each_stmt ref, int iteratorVar: @pattern_binding_decl_or_none ref ); #keyset[id] for_each_stmt_next_calls( //dir=stmt int id: @for_each_stmt ref, int nextCall: @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 | @pack_element_type | @pack_expansion_type | @pack_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 ); pack_element_types( //dir=type unique int id: @pack_element_type, int pack_type: @type_or_none ref ); pack_expansion_types( //dir=type unique int id: @pack_expansion_type, int pattern_type: @type_or_none ref, int count_type: @type_or_none ref ); pack_types( //dir=type unique int id: @pack_type ); #keyset[id, index] pack_type_elements( //dir=type int id: @pack_type ref, int index: int ref, int element: @type_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 = @local_archetype_type | @opaque_type_archetype_type | @pack_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 ); @local_archetype_type = @element_archetype_type | @opened_archetype_type ; @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 ); pack_archetype_types( //dir=type unique int id: @pack_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 ); element_archetype_types( //dir=type unique int id: @element_archetype_type ); enum_types( //dir=type unique int id: @enum_type ); opened_archetype_types( //dir=type unique int id: @opened_archetype_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 ); @accessor_or_none = @accessor | @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 ; @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 ; @function_or_none = @function | @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 ; @initializer_or_none = @initializer | @unspecified_element ; @key_path_component_or_none = @key_path_component | @unspecified_element ; @location_or_none = @location | @unspecified_element ; @macro_role_or_none = @macro_role | @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_expr_or_none = @type_expr | @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 ;