diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme new file mode 100644 index 000000000000..9baef67d1ffc --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/old.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..a8c2176e9a5c --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/semmlecode.cpp.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties new file mode 100644 index 000000000000..07a8d70b052d --- /dev/null +++ b/cpp/downgrades/9baef67d1ffc1551429dbe1c1130815693e28218/upgrade.properties @@ -0,0 +1,3 @@ +description: Add a predicate `getAnAttribute` to `Namespace` +compatibility: full +namespaceattributes.rel: delete diff --git a/cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md b/cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md new file mode 100644 index 000000000000..cbed27e109c7 --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-16-namespace-attributes.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a predicate `getAnAttribute` to `Namespace` to retrieve a namespace attribute. diff --git a/cpp/ql/lib/semmle/code/cpp/Namespace.qll b/cpp/ql/lib/semmle/code/cpp/Namespace.qll index dc138f67524b..b63beef3f4a0 100644 --- a/cpp/ql/lib/semmle/code/cpp/Namespace.qll +++ b/cpp/ql/lib/semmle/code/cpp/Namespace.qll @@ -99,6 +99,11 @@ class Namespace extends NameQualifyingElement, @namespace { /** Gets a file which declares (part of) this namespace. */ File getAFile() { result = this.getADeclarationEntry().getLocation().getFile() } + + /** Gets an attribute of this namespace. */ + Attribute getAnAttribute() { + namespaceattributes(underlyingElement(this), unresolveElement(result)) + } } /** diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index a8c2176e9a5c..9baef67d1ffc 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1139,6 +1139,11 @@ varattributes( int spec_id: @attribute ref ); +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + stmtattributes( int stmt_id: @stmt ref, int spec_id: @attribute ref diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 089d69c641cc..a09e3c44d347 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 15785 + 14477 @externalDataElement @@ -18,63 +18,63 @@ @location_default - 36090723 + 36187125 @location_stmt - 5203175 + 5217074 @location_expr - 17959858 + 18007831 @diagnostic - 1588 + 1484 @file - 81417 + 74673 @folder - 15468 + 14187 @macro_expansion - 39234203 + 39310397 @other_macro_reference - 312446 + 300692 @function - 4000085 + 4010769 @fun_decl - 4138135 + 4149688 @var_decl - 9237636 + 9262560 @type_decl - 1840533 + 1687983 @namespace_decl - 429821 + 430961 @using_declaration - 334532 + 306602 @using_directive - 8117 + 6474 @using_enum_declaration @@ -82,27 +82,27 @@ @static_assert - 183028 + 183513 @parameter - 6939004 + 6957539 @membervariable - 1489415 + 1493394 @globalvariable - 486788 + 488088 @localvariable - 727548 + 725943 @enumconstant - 343845 + 344763 @errortype @@ -334,35 +334,35 @@ @pointer - 470186 + 455607 @type_with_specifiers - 693863 + 695716 @array - 98055 + 98317 @routineptr - 857913 + 684228 @reference - 966848 + 969430 @gnu_vector - 843 + 774 @routinereference - 469 + 374 @rvalue_reference - 290677 + 291453 @block @@ -370,51 +370,51 @@ @decltype - 102076 + 102348 @type_operator - 8519 + 7960 @usertype - 4863363 + 4459321 @mangledname - 6313668 + 6330532 @type_mention - 5813149 + 5828677 @concept_template - 3868 + 3614 @routinetype - 757852 + 604424 @ptrtomember - 12026 + 11030 @specifier - 7724 + 7745 @gnuattribute - 559459 + 559628 @stdattribute - 349236 + 350169 @declspec - 328850 + 329728 @msattribute @@ -422,19 +422,19 @@ @alignas - 2171 + 2166 @attribute_arg_token - 20935 + 16696 @attribute_arg_constant_expr - 86916 + 82159 @attribute_arg_expr - 1753 + 1608 @attribute_arg_empty @@ -446,23 +446,23 @@ @attribute_arg_type - 461 + 460 @derivation - 598061 + 476983 @frienddecl - 878379 + 700584 @comment - 11190894 + 11220785 @namespace - 10800 + 9905 @specialnamequalifyingelement @@ -470,15 +470,15 @@ @namequalifier - 3255226 + 3041824 @value - 13438640 + 13474536 @initialiser - 2334426 + 2340619 @address_of @@ -486,131 +486,131 @@ @indirect - 403075 + 404151 @array_to_pointer - 1948652 + 1953741 @parexpr - 4902380 + 4915183 @arithnegexpr - 585003 + 586531 @unaryplusexpr - 4081 + 4072 @complementexpr - 38098 + 38199 @notexpr - 357277 + 355762 @postincrexpr - 84372 + 84597 @postdecrexpr - 57244 + 57394 @preincrexpr - 96455 + 96713 @predecrexpr - 35725 + 35820 @conditionalexpr - 895536 + 897875 @addexpr - 570027 + 571550 @subexpr - 465581 + 466797 @mulexpr - 434630 + 435791 @divexpr - 58999 + 54099 @remexpr - 20080 + 16015 @paddexpr - 118353 + 118669 @psubexpr - 67856 + 68037 @pdiffexpr - 43732 + 43849 @lshiftexpr - 550224 + 551693 @rshiftexpr - 200019 + 200553 @andexpr - 479933 + 481215 @orexpr - 193537 + 194054 @xorexpr - 73778 + 73975 @eqexpr - 641655 + 643368 @neexpr - 410795 + 411868 @gtexpr - 110852 + 111148 @ltexpr - 139057 + 139428 @geexpr - 81166 + 81383 @leexpr - 291256 + 292034 @assignexpr - 1277725 + 1281138 @assignaddexpr @@ -618,23 +618,23 @@ @assignsubexpr - 15266 + 15307 @assignmulexpr - 13754 + 12614 @assigndivexpr - 6791 + 6809 @assignremexpr - 872 + 874 @assignlshiftexpr - 3694 + 3704 @assignrshiftexpr @@ -642,95 +642,95 @@ @assignandexpr - 6510 + 6528 @assignorexpr - 19554 + 19606 @assignxorexpr - 29829 + 29909 @assignpaddexpr - 18578 + 18627 @assignpsubexpr - 1571 + 1575 @andlogicalexpr - 345664 + 346587 @orlogicalexpr - 1100577 + 1103517 @commaexpr - 168450 + 168900 @subscriptexpr - 433981 + 435140 @callexpr - 300697 + 261549 @vastartexpr - 5071 + 5085 @vaargexpr - 1300 + 1303 @vaendexpr - 2933 + 2941 @vacopyexpr - 170 + 136 @varaccess - 8232599 + 8254589 @runtime_sizeof - 400974 + 402045 @runtime_alignof - 62549 + 49885 @expr_stmt - 147968 + 148363 @routineexpr - 6134317 + 5732152 @type_operand - 1401612 + 1405356 @offsetofexpr - 148626 + 149023 @typescompexpr - 700060 + 701930 @literal - 6102027 + 7967615 @aggregateliteral @@ -738,43 +738,43 @@ @c_style_cast - 6026988 + 6026987 @temp_init - 1073608 + 992498 @errorexpr - 57293 + 45694 @reference_to - 2182339 + 1902971 @ref_indirect - 2642699 + 2107682 @vacuous_destructor_call - 9826 + 7837 @assume - 4383 + 4394 @conjugation - 13 + 12 @realpartexpr - 92 + 84 @imagpartexpr - 92 + 84 @jmulexpr @@ -814,35 +814,35 @@ @thisaccess - 1514601 + 1518618 @new_expr - 57934 + 46205 @delete_expr - 14398 + 11483 @throw_expr - 26079 + 24109 @condition_decl - 437589 + 408900 @braced_init_list - 2328 + 2152 @type_id - 60071 + 47909 @sizeof_pack - 2178 + 1737 @hasassignexpr @@ -886,15 +886,15 @@ @isabstractexpr - 74 + 68 @isbaseofexpr - 276 + 259 @isclassexpr - 2531 + 2538 @isconvtoexpr @@ -902,15 +902,15 @@ @isemptyexpr - 8846 + 8869 @isenumexpr - 2990 + 2998 @ispodexpr - 1041 + 955 @ispolyexpr @@ -926,75 +926,75 @@ @hastrivialdestructor - 3503 + 2794 @uuidof - 27985 + 28060 @delete_array_expr - 1556 + 1427 @new_array_expr - 6914 + 6933 @foldexpr - 1367 + 1247 @ctordirectinit - 141461 + 112822 @ctorvirtualinit - 5041 + 4020 @ctorfieldinit - 257929 + 206503 @ctordelegatinginit - 3613 + 3622 @dtordirectdestruct - 49432 + 39424 @dtorvirtualdestruct - 4998 + 3986 @dtorfielddestruct - 49945 + 39833 @static_cast - 387985 + 389021 @reinterpret_cast - 41729 + 41839 @const_cast - 30676 + 24465 @dynamic_cast - 989 + 907 @lambdaexpr - 17730 + 16482 @param_ref - 177449 + 164043 @noopexpr @@ -1002,7 +1002,7 @@ @istriviallyconstructibleexpr - 3737 + 3747 @isdestructibleexpr @@ -1014,19 +1014,19 @@ @istriviallydestructibleexpr - 996 + 999 @istriviallyassignableexpr - 3737 + 3747 @isnothrowassignableexpr - 5108 + 5121 @istrivialexpr - 3644 + 3369 @isstandardlayoutexpr @@ -1034,7 +1034,7 @@ @istriviallycopyableexpr - 1538 + 1226 @isliteraltypeexpr @@ -1054,11 +1054,11 @@ @isconstructibleexpr - 3613 + 3622 @isnothrowconstructibleexpr - 20682 + 20737 @hasfinalizerexpr @@ -1094,11 +1094,11 @@ @isfinalexpr - 11792 + 9404 @noexceptexpr - 30678 + 28361 @builtinshufflevector @@ -1106,11 +1106,11 @@ @builtinchooseexpr - 20646 + 20701 @builtinaddressof - 16278 + 15490 @vec_fill @@ -1126,7 +1126,7 @@ @spaceshipexpr - 1404 + 1312 @co_await @@ -1138,7 +1138,7 @@ @isassignable - 437 + 408 @isaggregate @@ -1146,7 +1146,7 @@ @hasuniqueobjectrepresentations - 46 + 43 @builtinbitcast @@ -1154,7 +1154,7 @@ @builtinshuffle - 764 + 701 @blockassignexpr @@ -1162,7 +1162,7 @@ @issame - 4858 + 4539 @isfunction @@ -1270,7 +1270,7 @@ @reuseexpr - 906424 + 846996 @istriviallycopyassignable @@ -1326,7 +1326,7 @@ @referenceconstructsfromtemporary - 46 + 43 @referenceconvertsfromtemporary @@ -1334,7 +1334,7 @@ @isconvertible - 138 + 129 @isvalidwinrttype @@ -1366,99 +1366,99 @@ @c11_generic - 30036 + 30117 @requires_expr - 17660 + 16502 @nested_requirement - 736 + 688 @compound_requirement - 11719 + 10951 @concept_id - 96774 + 90429 @lambdacapture - 28450 + 28526 @stmt_expr - 2026191 + 2031604 @stmt_if - 987571 + 990209 @stmt_while - 39542 + 39647 @stmt_goto - 151183 + 151587 @stmt_label - 72512 + 72705 @stmt_return - 1507458 + 1254954 @stmt_block - 1839752 + 1844666 @stmt_end_test_while - 233017 + 233640 @stmt_for - 84163 + 84388 @stmt_switch_case - 894774 + 836109 @stmt_switch - 440744 + 411847 @stmt_asm - 64027 + 64198 @stmt_decl - 767031 + 769065 @stmt_empty - 459509 + 429382 @stmt_continue - 28016 + 28091 @stmt_break - 139921 + 140292 @stmt_try_block - 28885 + 26703 @stmt_microsoft_try - 223 + 224 @stmt_set_vla_size @@ -1470,19 +1470,19 @@ @stmt_assigned_goto - 12393 + 12426 @stmt_range_based_for - 7391 + 6388 @stmt_handler - 47330 + 43754 @stmt_constexpr_if - 103537 + 103814 @stmt_co_return @@ -1502,51 +1502,51 @@ @ppd_if - 587335 + 588904 @ppd_ifdef - 213791 + 214362 @ppd_ifndef - 157824 + 158245 @ppd_elif - 27363 + 25096 @ppd_else - 235606 + 236236 @ppd_endif - 883245 + 885604 @ppd_plain_include - 397725 + 364778 @ppd_define - 2739070 + 2746387 @ppd_undef - 100671 + 100940 @ppd_pragma - 405677 + 406761 @ppd_include_next - 213 + 170 @ppd_line - 18866 + 18825 @ppd_error @@ -1574,7 +1574,7 @@ @link_target - 923 + 846 @xmldtd @@ -1604,15 +1604,15 @@ compilations - 15785 + 14477 id - 15785 + 14477 cwd - 13 + 12 @@ -1626,7 +1626,7 @@ 1 2 - 15785 + 14477 @@ -1642,7 +1642,7 @@ 1197 1198 - 13 + 12 @@ -1652,19 +1652,19 @@ compilation_args - 1263740 + 1159054 id - 15785 + 14477 num - 1833 + 1681 arg - 36541 + 33514 @@ -1678,77 +1678,77 @@ 36 42 - 1252 + 1149 42 43 - 1371 + 1257 43 44 - 896 + 822 44 45 - 632 + 580 45 51 - 1186 + 1088 51 70 - 606 + 556 71 72 - 883 + 810 72 90 - 1120 + 1028 94 96 - 487 + 447 98 99 - 1674 + 1536 100 102 - 118 + 108 103 104 - 2492 + 2285 104 119 - 1331 + 1221 120 138 - 1160 + 1064 139 140 - 567 + 520 @@ -1764,72 +1764,72 @@ 34 38 - 738 + 677 38 39 - 1872 + 1717 39 40 - 1226 + 1124 40 42 - 1358 + 1245 42 53 - 751 + 689 53 54 - 883 + 810 54 63 - 1120 + 1028 64 67 - 501 + 459 67 68 - 1753 + 1608 68 70 - 1213 + 1112 70 71 - 1753 + 1608 73 79 - 1186 + 1088 79 89 - 1411 + 1294 89 90 - 13 + 12 @@ -1845,57 +1845,57 @@ 43 90 - 79 + 72 90 108 - 145 + 133 108 183 - 131 + 120 198 422 - 145 + 133 422 595 - 158 + 145 595 605 - 158 + 145 605 749 - 145 + 133 750 778 - 145 + 133 781 883 - 145 + 133 930 1190 - 105 + 96 1197 1198 - 474 + 435 @@ -1911,72 +1911,72 @@ 1 5 - 158 + 145 5 7 - 145 + 133 9 12 - 92 + 84 12 15 - 145 + 133 15 18 - 118 + 108 18 22 - 145 + 133 22 27 - 158 + 145 27 29 - 105 + 96 29 34 - 145 + 133 34 44 - 158 + 145 45 63 - 145 + 133 67 94 - 145 + 133 94 164 - 145 + 133 171 199 - 26 + 24 @@ -1992,22 +1992,22 @@ 1 2 - 16734 + 15348 2 3 - 15837 + 14525 3 103 - 2742 + 2515 104 1198 - 1226 + 1124 @@ -2023,17 +2023,17 @@ 1 2 - 24198 + 22193 2 3 - 10892 + 9990 3 62 - 1450 + 1330 @@ -2043,15 +2043,15 @@ compilation_build_mode - 15785 + 14477 id - 15785 + 14477 mode - 13 + 12 @@ -2065,7 +2065,7 @@ 1 2 - 15785 + 14477 @@ -2081,7 +2081,7 @@ 1197 1198 - 13 + 12 @@ -2091,19 +2091,19 @@ compilation_compiling_files - 15785 + 15742 id - 15785 + 2723 num - 13 + 4521 file - 7226 + 13672 @@ -2117,7 +2117,42 @@ 1 2 - 15785 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2133,7 +2168,42 @@ 1 2 - 15785 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2147,9 +2217,29 @@ 12 - 1197 - 1198 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 @@ -2163,9 +2253,29 @@ 12 - 548 - 549 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 49 + 272 @@ -2181,17 +2291,17 @@ 1 2 - 171 + 12311 2 - 3 - 7028 + 4 + 1143 - 28 - 91 - 26 + 4 + 6 + 217 @@ -2207,7 +2317,17 @@ 1 2 - 7226 + 12528 + + + 2 + 4 + 1089 + + + 4 + 5 + 54 @@ -2217,23 +2337,23 @@ compilation_time - 62876 + 62971 id - 15719 + 2723 num - 13 + 4521 kind - 52 + 217 seconds - 17473 + 13346 @@ -2247,7 +2367,42 @@ 1 2 - 15719 + 1361 + + + 2 + 3 + 163 + + + 3 + 4 + 163 + + + 4 + 5 + 326 + + + 5 + 8 + 163 + + + 8 + 9 + 163 + + + 9 + 13 + 217 + + + 21 + 84 + 163 @@ -2263,7 +2418,7 @@ 4 5 - 15719 + 2723 @@ -2276,20 +2431,55 @@ 12 - - 2 - 3 - 145 - 3 4 - 7819 + 708 4 5 - 7754 + 653 + + + 6 + 8 + 217 + + + 8 + 9 + 108 + + + 10 + 11 + 163 + + + 11 + 13 + 217 + + + 14 + 16 + 108 + + + 16 + 20 + 217 + + + 20 + 38 + 217 + + + 48 + 87 + 108 @@ -2303,9 +2493,29 @@ 12 - 1192 - 1193 - 13 + 1 + 2 + 2396 + + + 2 + 3 + 980 + + + 3 + 4 + 490 + + + 4 + 13 + 381 + + + 13 + 51 + 272 @@ -2321,7 +2531,7 @@ 4 5 - 13 + 4521 @@ -2335,9 +2545,49 @@ 12 - 1325 - 1326 - 13 + 3 + 4 + 1470 + + + 4 + 5 + 926 + + + 5 + 6 + 326 + + + 6 + 7 + 490 + + + 7 + 8 + 163 + + + 8 + 9 + 326 + + + 9 + 17 + 381 + + + 22 + 48 + 381 + + + 87 + 88 + 54 @@ -2351,9 +2601,9 @@ 12 - 1192 - 1193 - 52 + 50 + 51 + 217 @@ -2367,9 +2617,9 @@ 12 - 1 - 2 - 52 + 83 + 84 + 217 @@ -2383,24 +2633,24 @@ 12 - 9 - 10 - 13 + 3 + 4 + 54 - 12 - 13 - 13 + 4 + 5 + 54 - 705 - 706 - 13 + 132 + 133 + 54 - 795 - 796 - 13 + 142 + 143 + 54 @@ -2416,22 +2666,27 @@ 1 2 - 11195 + 7190 2 3 - 3626 + 3322 3 4 - 1384 + 1470 4 - 703 - 1265 + 7 + 1089 + + + 7 + 45 + 272 @@ -2447,7 +2702,32 @@ 1 2 - 17473 + 6373 + + + 2 + 3 + 2941 + + + 3 + 4 + 1525 + + + 4 + 5 + 926 + + + 5 + 8 + 1089 + + + 8 + 75 + 490 @@ -2463,17 +2743,12 @@ 1 2 - 14914 + 11384 2 3 - 2531 - - - 3 - 4 - 26 + 1961 @@ -2483,23 +2758,23 @@ diagnostic_for - 4443 + 4152 diagnostic - 1588 + 1484 compilation - 1450 + 1355 file_number - 23 + 21 file_number_diagnostic_number - 115 + 107 @@ -2513,12 +2788,12 @@ 1 2 - 1542 + 1441 63 64 - 46 + 43 @@ -2534,7 +2809,7 @@ 1 2 - 1588 + 1484 @@ -2550,7 +2825,7 @@ 1 2 - 1588 + 1484 @@ -2566,12 +2841,12 @@ 3 4 - 1404 + 1312 5 6 - 46 + 43 @@ -2587,7 +2862,7 @@ 1 2 - 1450 + 1355 @@ -2603,12 +2878,12 @@ 3 4 - 1404 + 1312 5 6 - 46 + 43 @@ -2624,7 +2899,7 @@ 69 70 - 23 + 21 @@ -2640,7 +2915,7 @@ 63 64 - 23 + 21 @@ -2656,7 +2931,7 @@ 5 6 - 23 + 21 @@ -2672,17 +2947,17 @@ 1 2 - 46 + 43 2 3 - 46 + 43 63 64 - 23 + 21 @@ -2698,12 +2973,12 @@ 2 3 - 46 + 43 63 64 - 69 + 64 @@ -2719,7 +2994,7 @@ 1 2 - 115 + 107 @@ -2729,19 +3004,19 @@ compilation_finished - 15785 + 14477 id - 15785 + 14477 cpu_seconds - 11894 + 10957 elapsed_seconds - 224 + 217 @@ -2755,7 +3030,7 @@ 1 2 - 15785 + 14477 @@ -2771,7 +3046,7 @@ 1 2 - 15785 + 14477 @@ -2787,17 +3062,17 @@ 1 2 - 10075 + 9204 2 3 - 1345 + 1306 3 - 36 - 474 + 34 + 447 @@ -2813,12 +3088,12 @@ 1 2 - 10984 + 10353 2 3 - 909 + 604 @@ -2832,69 +3107,74 @@ 12 - 2 - 3 - 52 + 1 + 2 + 12 - 3 - 4 - 13 + 2 + 3 + 60 - 5 - 6 - 13 + 9 + 10 + 12 - 7 - 8 - 13 + 10 + 11 + 12 12 13 - 13 + 12 13 14 - 13 + 12 - 17 - 18 - 26 + 14 + 15 + 12 + + + 21 + 22 + 12 30 31 - 13 + 12 - 52 - 53 - 13 + 50 + 51 + 12 - 145 - 146 - 13 + 160 + 161 + 12 261 262 - 13 + 12 - 303 - 304 - 13 + 278 + 279 + 12 - 324 - 325 - 13 + 328 + 329 + 12 @@ -2908,69 +3188,69 @@ 12 - 2 - 3 - 52 - - - 3 - 4 - 13 + 1 + 2 + 12 - 5 - 6 - 13 + 2 + 3 + 60 - 7 - 8 - 13 + 9 + 10 + 24 12 13 - 13 + 12 13 14 - 13 + 12 - 17 - 18 - 26 + 14 + 15 + 12 - 30 - 31 - 13 + 21 + 22 + 12 + + + 29 + 30 + 12 49 50 - 13 + 12 - 141 - 142 - 13 + 150 + 151 + 12 - 174 - 175 - 13 + 172 + 173 + 12 - 239 - 240 - 13 + 227 + 228 + 12 - 256 - 257 - 13 + 240 + 241 + 12 @@ -4742,31 +5022,31 @@ locations_default - 36090723 + 36187125 id - 36090723 + 36187125 container - 40866 + 40975 startLine - 7467157 + 7487103 startColumn - 21180 + 21237 endLine - 7469151 + 7489102 endColumn - 53326 + 53468 @@ -4780,7 +5060,7 @@ 1 2 - 36090723 + 36187125 @@ -4796,7 +5076,7 @@ 1 2 - 36090723 + 36187125 @@ -4812,7 +5092,7 @@ 1 2 - 36090723 + 36187125 @@ -4828,7 +5108,7 @@ 1 2 - 36090723 + 36187125 @@ -4844,7 +5124,7 @@ 1 2 - 36090723 + 36187125 @@ -4860,67 +5140,67 @@ 1 15 - 3114 + 3123 15 41 - 3114 + 3123 42 66 - 3364 + 3373 67 95 - 3114 + 3123 98 124 - 3239 + 3248 124 174 - 3364 + 3373 175 228 - 3114 + 3123 230 303 - 3114 + 3123 305 406 - 3114 + 3123 408 596 - 3239 + 3248 598 943 - 3114 + 3123 986 2568 - 3114 + 3123 2587 57658 - 2741 + 2748 @@ -4936,67 +5216,67 @@ 1 13 - 3488 + 3497 13 29 - 3239 + 3248 29 42 - 3114 + 3123 42 58 - 3364 + 3373 58 76 - 3114 + 3123 77 102 - 3239 + 3248 102 134 - 3114 + 3123 134 173 - 3114 + 3123 173 242 - 3114 + 3123 243 348 - 3114 + 3123 348 489 - 3114 + 3123 493 1269 - 3114 + 3123 1337 57597 - 2616 + 2623 @@ -5012,67 +5292,67 @@ 1 4 - 2242 + 2248 4 7 - 3114 + 3123 7 12 - 3488 + 3497 12 16 - 3114 + 3123 16 22 - 3364 + 3373 22 28 - 3114 + 3123 28 33 - 3239 + 3248 33 39 - 3364 + 3373 39 48 - 3364 + 3373 48 60 - 3364 + 3373 60 82 - 3364 + 3373 83 98 - 3239 + 3248 98 141 - 2491 + 2498 @@ -5088,67 +5368,67 @@ 1 13 - 3488 + 3497 13 29 - 3239 + 3248 29 42 - 3114 + 3123 42 58 - 3364 + 3373 58 76 - 3114 + 3123 77 102 - 3239 + 3248 102 134 - 3114 + 3123 134 173 - 3239 + 3248 174 244 - 3114 + 3123 246 348 - 3114 + 3123 348 494 - 3114 + 3123 513 1349 - 3114 + 3123 1407 57597 - 2491 + 2498 @@ -5164,67 +5444,67 @@ 1 12 - 3364 + 3373 13 24 - 3239 + 3248 25 33 - 3239 + 3248 33 39 - 3364 + 3373 39 45 - 3613 + 3622 45 54 - 3114 + 3123 54 62 - 3613 + 3622 62 71 - 3364 + 3373 71 83 - 3488 + 3497 83 99 - 3114 + 3123 99 114 - 3114 + 3123 114 143 - 3114 + 3123 147 363 - 1121 + 1124 @@ -5240,32 +5520,32 @@ 1 2 - 4941391 + 4954590 2 3 - 797649 + 799780 3 4 - 564160 + 565667 4 12 - 590823 + 592402 12 210 - 560173 + 561670 210 534 - 12957 + 12992 @@ -5281,27 +5561,27 @@ 1 2 - 4999452 + 5012806 2 3 - 1229865 + 1233150 3 6 - 661593 + 663360 6 106 - 560173 + 561670 107 329 - 16072 + 16115 @@ -5317,27 +5597,27 @@ 1 2 - 5633884 + 5648932 2 3 - 530645 + 532062 3 7 - 577118 + 578660 7 24 - 569269 + 570789 24 72 - 156240 + 156658 @@ -5353,12 +5633,12 @@ 1 2 - 7292975 + 7312456 2 81 - 174182 + 174647 @@ -5374,27 +5654,27 @@ 1 2 - 5008049 + 5021426 2 3 - 764632 + 766674 3 4 - 557682 + 559171 4 12 - 602037 + 603645 12 235 - 534756 + 536185 @@ -5410,67 +5690,67 @@ 1 2 - 1495 + 1499 2 4 - 1868 + 1873 4 9 - 1619 + 1624 9 19 - 1744 + 1748 20 74 - 1619 + 1624 81 173 - 1619 + 1624 173 435 - 1619 + 1624 468 904 - 1619 + 1624 945 1309 - 1619 + 1624 1328 1510 - 1619 + 1624 1531 1774 - 1619 + 1624 1834 2887 - 1619 + 1624 3491 119749 - 1495 + 1499 @@ -5486,67 +5766,67 @@ 1 2 - 1868 + 1873 2 4 - 1744 + 1748 4 6 - 1495 + 1499 6 11 - 1744 + 1748 11 33 - 1619 + 1624 34 45 - 1619 + 1624 50 75 - 1744 + 1748 78 98 - 1744 + 1748 101 131 - 1619 + 1624 131 147 - 1868 + 1873 149 161 - 1619 + 1624 162 198 - 1619 + 1624 202 329 - 872 + 874 @@ -5562,67 +5842,67 @@ 1 2 - 1619 + 1624 2 4 - 1868 + 1873 4 9 - 1619 + 1624 9 19 - 1744 + 1748 20 74 - 1619 + 1624 80 169 - 1619 + 1624 171 432 - 1619 + 1624 467 822 - 1619 + 1624 861 1001 - 1619 + 1624 1002 1190 - 1619 + 1624 1201 1338 - 1619 + 1624 1347 1920 - 1619 + 1624 2210 59360 - 1370 + 1374 @@ -5638,67 +5918,67 @@ 1 2 - 1619 + 1624 2 4 - 1868 + 1873 4 9 - 1619 + 1624 9 19 - 1744 + 1748 20 74 - 1619 + 1624 80 169 - 1619 + 1624 171 432 - 1619 + 1624 467 822 - 1619 + 1624 861 1003 - 1619 + 1624 1003 1198 - 1619 + 1624 1201 1338 - 1619 + 1624 1347 1920 - 1619 + 1624 2220 59375 - 1370 + 1374 @@ -5714,67 +5994,67 @@ 1 2 - 1868 + 1873 2 4 - 1744 + 1748 4 7 - 1868 + 1873 7 13 - 1744 + 1748 13 21 - 1744 + 1748 21 29 - 1619 + 1624 29 37 - 1495 + 1499 37 50 - 1619 + 1624 50 58 - 1619 + 1624 61 67 - 1744 + 1748 67 76 - 1619 + 1624 76 137 - 1619 + 1624 139 299 - 872 + 874 @@ -5790,32 +6070,32 @@ 1 2 - 4941017 + 4954215 2 3 - 804876 + 807026 3 4 - 559301 + 560795 4 12 - 591197 + 592776 12 214 - 560298 + 561795 214 530 - 12459 + 12492 @@ -5831,27 +6111,27 @@ 1 2 - 4997957 + 5011307 2 3 - 1232980 + 1236274 3 6 - 661967 + 663735 6 107 - 560298 + 561795 107 329 - 15948 + 15990 @@ -5867,12 +6147,12 @@ 1 2 - 7288490 + 7307958 2 7 - 180661 + 181143 @@ -5888,27 +6168,27 @@ 1 2 - 5636500 + 5651556 2 3 - 529274 + 530688 3 7 - 577990 + 579534 7 24 - 568895 + 570415 24 72 - 156489 + 156907 @@ -5924,27 +6204,27 @@ 1 2 - 5007924 + 5021301 2 3 - 771235 + 773295 3 4 - 553072 + 554549 4 12 - 603034 + 604644 12 235 - 533884 + 535310 @@ -5960,52 +6240,52 @@ 1 2 - 15698 + 15740 2 3 - 5606 + 5621 3 7 - 4485 + 4497 7 17 - 4111 + 4122 17 32 - 4236 + 4247 35 103 - 4111 + 4122 147 635 - 4111 + 4122 651 2069 - 4111 + 4122 2137 3404 - 4111 + 4122 3430 33692 - 2741 + 2748 @@ -6021,52 +6301,52 @@ 1 2 - 18564 + 18614 2 3 - 5606 + 5621 3 5 - 4236 + 4247 5 7 - 3364 + 3373 7 15 - 4609 + 4622 15 78 - 4111 + 4122 78 143 - 4236 + 4247 150 202 - 4111 + 4122 203 263 - 4111 + 4122 266 329 - 373 + 374 @@ -6082,52 +6362,52 @@ 1 2 - 15948 + 15990 2 3 - 5980 + 5996 3 7 - 4111 + 4122 7 17 - 4236 + 4247 17 35 - 4111 + 4122 35 140 - 4111 + 4122 157 601 - 4111 + 4122 610 1714 - 4111 + 4122 1749 2382 - 4111 + 4122 2421 30689 - 2491 + 2498 @@ -6143,52 +6423,52 @@ 1 2 - 17318 + 17364 2 3 - 6354 + 6371 3 4 - 3114 + 3123 4 6 - 3862 + 3872 6 11 - 4609 + 4622 11 22 - 4111 + 4122 22 40 - 4236 + 4247 42 60 - 4859 + 4872 60 68 - 4111 + 4122 68 73 - 747 + 749 @@ -6204,52 +6484,52 @@ 1 2 - 15948 + 15990 2 3 - 5980 + 5996 3 7 - 4111 + 4122 7 17 - 4360 + 4372 17 36 - 4236 + 4247 36 170 - 4111 + 4122 173 620 - 4111 + 4122 622 1824 - 4111 + 4122 1843 2449 - 4111 + 4122 2460 30688 - 2242 + 2248 @@ -6259,31 +6539,31 @@ locations_stmt - 5203175 + 5217074 id - 5203175 + 5217074 container - 4153 + 4164 startLine - 272866 + 273595 startColumn - 2553 + 2560 endLine - 265036 + 265744 endColumn - 3227 + 3235 @@ -6297,7 +6577,7 @@ 1 2 - 5203175 + 5217074 @@ -6313,7 +6593,7 @@ 1 2 - 5203175 + 5217074 @@ -6329,7 +6609,7 @@ 1 2 - 5203175 + 5217074 @@ -6345,7 +6625,7 @@ 1 2 - 5203175 + 5217074 @@ -6361,7 +6641,7 @@ 1 2 - 5203175 + 5217074 @@ -6377,62 +6657,62 @@ 1 18 - 336 + 337 18 60 - 336 + 337 61 180 - 336 + 337 190 450 - 336 + 337 454 628 - 336 + 337 653 883 - 336 + 337 906 1161 - 336 + 337 1167 1466 - 336 + 337 1508 1785 - 336 + 337 1858 2296 - 336 + 337 2347 2833 - 336 + 337 2871 4105 - 336 + 337 4275 @@ -6453,62 +6733,62 @@ 1 18 - 336 + 337 18 49 - 336 + 337 59 170 - 336 + 337 170 394 - 336 + 337 434 603 - 336 + 337 610 846 - 336 + 337 880 1132 - 336 + 337 1135 1395 - 336 + 337 1409 1727 - 336 + 337 1761 2226 - 336 + 337 2250 2778 - 336 + 337 2800 3886 - 336 + 337 3965 @@ -6529,67 +6809,67 @@ 1 3 - 280 + 281 3 7 - 308 + 309 7 9 - 308 + 309 9 11 - 336 + 337 11 13 - 308 + 309 13 14 - 308 + 309 14 16 - 336 + 337 16 17 - 224 + 225 17 19 - 280 + 281 19 21 - 252 + 253 21 23 - 336 + 337 23 29 - 336 + 337 29 43 - 336 + 337 48 @@ -6610,62 +6890,62 @@ 1 15 - 336 + 337 15 44 - 336 + 337 47 137 - 336 + 337 141 314 - 336 + 337 328 472 - 336 + 337 488 643 - 336 + 337 675 858 - 364 + 365 865 1107 - 336 + 337 1178 1343 - 336 + 337 1401 1768 - 336 + 337 1782 2165 - 336 + 337 2254 3130 - 336 + 337 3343 @@ -6686,62 +6966,62 @@ 1 7 - 336 + 337 8 26 - 364 + 365 26 47 - 364 + 365 47 59 - 336 + 337 59 64 - 308 + 309 64 67 - 280 + 281 67 69 - 336 + 337 69 71 - 308 + 309 71 72 - 336 + 337 72 74 - 336 + 337 74 76 - 336 + 337 76 80 - 336 + 337 81 @@ -6762,67 +7042,67 @@ 1 2 - 29411 + 29489 2 3 - 20879 + 20935 3 4 - 17034 + 17080 4 6 - 19728 + 19781 6 8 - 17090 + 17136 8 11 - 22816 + 22876 11 16 - 23573 + 23636 16 22 - 20935 + 20991 22 29 - 23236 + 23299 29 37 - 23686 + 23749 37 45 - 20627 + 20682 45 56 - 22142 + 22201 56 73 - 11702 + 11733 @@ -6838,67 +7118,67 @@ 1 2 - 30449 + 30530 2 3 - 21468 + 21526 3 4 - 17315 + 17361 4 6 - 19644 + 19697 6 8 - 17371 + 17418 8 11 - 23994 + 24058 11 16 - 22338 + 22398 16 22 - 22142 + 22201 22 29 - 23152 + 23214 29 36 - 21861 + 21920 36 44 - 22310 + 22370 44 54 - 21665 + 21723 54 68 - 9148 + 9173 @@ -6914,57 +7194,57 @@ 1 2 - 36623 + 36721 2 3 - 28456 + 28532 3 4 - 22956 + 23017 4 5 - 21974 + 22032 5 6 - 23798 + 23861 6 7 - 27109 + 27182 7 8 - 31066 + 31149 8 9 - 27895 + 27970 9 10 - 20430 + 20485 10 12 - 22703 + 22764 12 18 - 9850 + 9876 @@ -6980,67 +7260,67 @@ 1 2 - 47231 + 47357 2 3 - 35220 + 35314 3 4 - 25173 + 25240 4 5 - 22114 + 22173 5 6 - 17455 + 17502 6 7 - 16473 + 16517 7 8 - 13919 + 13956 8 9 - 15070 + 15110 9 10 - 14733 + 14772 10 11 - 14396 + 14435 11 12 - 13863 + 13900 12 14 - 21581 + 21638 14 24 - 15631 + 15673 @@ -7056,67 +7336,67 @@ 1 2 - 30224 + 30305 2 3 - 22114 + 22173 3 4 - 17680 + 17727 4 6 - 21946 + 22004 6 8 - 20065 + 20119 8 10 - 18017 + 18065 10 14 - 24948 + 25015 14 18 - 23236 + 23299 18 22 - 24078 + 24143 22 26 - 25229 + 25296 26 30 - 22535 + 22595 30 36 - 20683 + 20738 36 42 - 2104 + 2110 @@ -7132,7 +7412,7 @@ 1 2 - 308 + 309 2 @@ -7142,7 +7422,7 @@ 3 7 - 224 + 225 7 @@ -7152,7 +7432,7 @@ 12 20 - 224 + 225 21 @@ -7208,7 +7488,7 @@ 1 2 - 392 + 393 2 @@ -7218,12 +7498,12 @@ 3 5 - 224 + 225 5 8 - 224 + 225 8 @@ -7279,7 +7559,7 @@ 1 2 - 308 + 309 2 @@ -7289,7 +7569,7 @@ 3 7 - 224 + 225 7 @@ -7299,7 +7579,7 @@ 12 20 - 224 + 225 21 @@ -7355,7 +7635,7 @@ 1 2 - 308 + 309 2 @@ -7365,7 +7645,7 @@ 3 7 - 224 + 225 7 @@ -7375,7 +7655,7 @@ 12 20 - 224 + 225 21 @@ -7431,7 +7711,7 @@ 1 2 - 392 + 393 2 @@ -7446,12 +7726,12 @@ 4 5 - 224 + 225 5 8 - 224 + 225 8 @@ -7461,7 +7741,7 @@ 11 15 - 224 + 225 15 @@ -7502,72 +7782,72 @@ 1 2 - 23770 + 23833 2 3 - 19672 + 19725 3 4 - 15687 + 15729 4 6 - 21300 + 21357 6 8 - 17062 + 17108 8 11 - 21104 + 21160 11 15 - 20009 + 20063 15 21 - 21946 + 22004 21 27 - 21076 + 21132 27 34 - 20374 + 20428 34 42 - 21553 + 21610 42 51 - 19925 + 19978 51 68 - 20262 + 20316 68 130 - 1290 + 1294 @@ -7583,62 +7863,62 @@ 1 2 - 34069 + 34160 2 3 - 22030 + 22089 3 4 - 17427 + 17474 4 6 - 21384 + 21441 6 8 - 20486 + 20541 8 11 - 21693 + 21751 11 16 - 23798 + 23861 16 20 - 19925 + 19978 20 26 - 23433 + 23496 26 32 - 22226 + 22286 32 39 - 20458 + 20513 39 58 - 18101 + 18149 @@ -7654,62 +7934,62 @@ 1 2 - 44341 + 44459 2 3 - 32413 + 32500 3 4 - 25201 + 25268 4 5 - 20795 + 20850 5 6 - 18859 + 18909 6 7 - 15856 + 15898 7 8 - 16249 + 16292 8 9 - 14930 + 14969 9 10 - 13919 + 13956 10 12 - 24443 + 24509 12 15 - 24191 + 24255 15 100 - 13835 + 13872 @@ -7725,57 +8005,57 @@ 1 2 - 34069 + 34160 2 3 - 27839 + 27913 3 4 - 22984 + 23045 4 5 - 24331 + 24396 5 6 - 25341 + 25409 6 7 - 27951 + 28026 7 8 - 30617 + 30699 8 9 - 25594 + 25662 9 10 - 17624 + 17671 10 12 - 20458 + 20513 12 18 - 8222 + 8244 @@ -7791,67 +8071,67 @@ 1 2 - 33732 + 33823 2 3 - 22703 + 22764 3 4 - 17119 + 17164 4 6 - 24331 + 24396 6 8 - 20935 + 20991 8 10 - 17483 + 17530 10 13 - 19700 + 19753 13 16 - 20514 + 20569 16 19 - 20065 + 20119 19 22 - 18971 + 19021 22 26 - 23686 + 23749 26 31 - 20963 + 21019 31 39 - 4827 + 4839 @@ -7867,67 +8147,67 @@ 1 2 - 252 + 253 2 4 - 252 + 253 4 7 - 224 + 225 7 16 - 252 + 253 23 131 - 252 + 253 149 388 - 252 + 253 392 675 - 252 + 253 710 1137 - 252 + 253 1139 1672 - 252 + 253 1883 2794 - 252 + 253 2937 4095 - 252 + 253 4146 4771 - 252 + 253 5032 15404 - 224 + 225 @@ -7943,47 +8223,47 @@ 1 2 - 280 + 281 2 3 - 252 + 253 3 6 - 252 + 253 6 21 - 252 + 253 31 67 - 252 + 253 68 93 - 252 + 253 94 106 - 252 + 253 107 112 - 252 + 253 112 118 - 252 + 253 118 @@ -7998,12 +8278,12 @@ 123 124 - 224 + 225 124 127 - 252 + 253 127 @@ -8024,67 +8304,67 @@ 1 2 - 252 + 253 2 4 - 252 + 253 4 7 - 224 + 225 7 15 - 252 + 253 22 129 - 252 + 253 143 374 - 252 + 253 379 646 - 252 + 253 666 963 - 252 + 253 1000 1430 - 252 + 253 1586 2172 - 252 + 253 2265 2916 - 252 + 253 2948 3215 - 252 + 253 3417 5821 - 224 + 225 @@ -8100,27 +8380,27 @@ 1 2 - 280 + 281 2 3 - 224 + 225 3 5 - 280 + 281 5 8 - 252 + 253 8 12 - 252 + 253 12 @@ -8130,7 +8410,7 @@ 14 16 - 252 + 253 16 @@ -8140,27 +8420,27 @@ 19 21 - 224 + 225 21 23 - 252 + 253 23 25 - 252 + 253 25 28 - 252 + 253 28 33 - 280 + 281 45 @@ -8181,62 +8461,62 @@ 1 2 - 280 + 281 2 4 - 224 + 225 4 7 - 280 + 281 7 27 - 252 + 253 42 130 - 252 + 253 139 325 - 252 + 253 364 584 - 252 + 253 610 967 - 252 + 253 1056 1409 - 252 + 253 1420 2038 - 252 + 253 2065 2627 - 252 + 253 2651 3073 - 252 + 253 3086 @@ -8251,31 +8531,31 @@ locations_expr - 17959858 + 18007831 id - 17959858 + 18007831 container - 6342 + 6359 startLine - 262033 + 262733 startColumn - 3367 + 3376 endLine - 262005 + 262705 endColumn - 3816 + 3826 @@ -8289,7 +8569,7 @@ 1 2 - 17959858 + 18007831 @@ -8305,7 +8585,7 @@ 1 2 - 17959858 + 18007831 @@ -8321,7 +8601,7 @@ 1 2 - 17959858 + 18007831 @@ -8337,7 +8617,7 @@ 1 2 - 17959858 + 18007831 @@ -8353,7 +8633,7 @@ 1 2 - 17959858 + 18007831 @@ -8369,67 +8649,67 @@ 1 2 - 561 + 562 2 6 - 477 + 478 6 11 - 477 + 478 12 26 - 505 + 506 27 87 - 477 + 478 95 514 - 477 + 478 525 1401 - 477 + 478 1526 2343 - 477 + 478 2404 3615 - 477 + 478 3668 5162 - 477 + 478 5341 7345 - 477 + 478 7399 9307 - 477 + 478 9382 16759 - 477 + 478 18811 @@ -8450,67 +8730,67 @@ 1 2 - 673 + 675 2 4 - 477 + 478 4 10 - 533 + 534 10 20 - 505 + 506 20 66 - 477 + 478 67 162 - 477 + 478 166 362 - 477 + 478 376 591 - 477 + 478 593 929 - 477 + 478 960 1269 - 477 + 478 1291 1782 - 477 + 478 1851 2492 - 477 + 478 2594 4241 - 336 + 337 @@ -8526,72 +8806,72 @@ 1 2 - 673 + 675 2 4 - 505 + 506 4 7 - 533 + 534 7 16 - 477 + 478 16 34 - 505 + 506 36 59 - 477 + 478 59 66 - 505 + 506 66 68 - 364 + 365 68 69 - 280 + 281 69 70 - 420 + 422 70 71 - 252 + 253 71 72 - 420 + 422 72 74 - 364 + 365 74 92 - 505 + 506 94 @@ -8612,67 +8892,67 @@ 1 2 - 673 + 675 2 4 - 477 + 478 4 10 - 533 + 534 10 20 - 505 + 506 20 68 - 477 + 478 68 163 - 477 + 478 166 362 - 477 + 478 376 592 - 477 + 478 593 931 - 477 + 478 960 1273 - 477 + 478 1292 1786 - 477 + 478 1855 2501 - 477 + 478 2593 4416 - 336 + 337 @@ -8688,47 +8968,47 @@ 1 2 - 617 + 619 2 4 - 477 + 478 4 7 - 505 + 506 7 15 - 477 + 478 15 36 - 477 + 478 36 62 - 477 + 478 62 71 - 533 + 534 71 73 - 280 + 281 73 75 - 449 + 450 75 @@ -8738,22 +9018,22 @@ 76 77 - 561 + 562 77 79 - 477 + 478 79 84 - 477 + 478 84 116 - 364 + 365 @@ -8769,67 +9049,67 @@ 1 5 - 22002 + 22060 5 9 - 22507 + 22567 9 15 - 21889 + 21948 15 23 - 20627 + 20682 23 32 - 20683 + 20738 32 44 - 20486 + 20541 44 60 - 20149 + 20203 60 80 - 20290 + 20344 80 103 - 19953 + 20006 103 130 - 20093 + 20147 130 159 - 19897 + 19950 159 194 - 19953 + 20006 194 297 - 13498 + 13534 @@ -8845,62 +9125,62 @@ 1 2 - 32105 + 32190 2 3 - 21328 + 21385 3 4 - 15491 + 15532 4 6 - 22338 + 22398 6 8 - 18606 + 18656 8 11 - 22423 + 22483 11 16 - 23686 + 23749 16 21 - 22507 + 22567 21 28 - 22675 + 22736 28 35 - 21637 + 21695 35 43 - 21777 + 21835 43 61 - 17455 + 17502 @@ -8916,62 +9196,62 @@ 1 4 - 21805 + 21863 4 7 - 23938 + 24002 7 11 - 22787 + 22848 11 16 - 23770 + 23833 16 21 - 23910 + 23974 21 26 - 20570 + 20625 26 31 - 22086 + 22145 31 36 - 24106 + 24171 36 40 - 21468 + 21526 40 44 - 22619 + 22679 44 49 - 22759 + 22820 49 63 - 12207 + 12240 @@ -8987,27 +9267,27 @@ 1 2 - 138972 + 139344 2 3 - 61123 + 61286 3 4 - 37689 + 37790 4 6 - 19981 + 20034 6 23 - 4265 + 4277 @@ -9023,62 +9303,62 @@ 1 4 - 23152 + 23214 4 7 - 22731 + 22792 7 11 - 22423 + 22483 11 16 - 22142 + 22201 16 21 - 22451 + 22511 21 27 - 22872 + 22933 27 33 - 22479 + 22539 33 38 - 19757 + 19809 38 43 - 21300 + 21357 43 47 - 19953 + 20006 47 52 - 23040 + 23102 52 66 - 19672 + 19725 68 @@ -9099,62 +9379,62 @@ 1 2 - 420 + 422 2 4 - 252 + 253 4 8 - 280 + 281 8 26 - 280 + 281 43 253 - 252 + 253 278 844 - 252 + 253 949 1891 - 252 + 253 2093 4169 - 252 + 253 4251 7004 - 252 + 253 7173 11370 - 252 + 253 12331 15107 - 252 + 253 15374 30162 - 252 + 253 30211 @@ -9175,7 +9455,7 @@ 1 2 - 449 + 450 2 @@ -9190,52 +9470,52 @@ 4 6 - 252 + 253 7 32 - 252 + 253 43 99 - 252 + 253 101 121 - 252 + 253 121 130 - 252 + 253 130 138 - 252 + 253 138 142 - 280 + 281 142 144 - 224 + 225 144 150 - 280 + 281 151 158 - 252 + 253 @@ -9251,62 +9531,62 @@ 1 2 - 420 + 422 2 4 - 252 + 253 4 7 - 252 + 253 7 19 - 252 + 253 20 152 - 252 + 253 199 588 - 252 + 253 633 1287 - 252 + 253 1365 2343 - 252 + 253 2576 3504 - 252 + 253 3522 4709 - 252 + 253 4736 5298 - 252 + 253 5332 5999 - 252 + 253 6157 @@ -9327,62 +9607,62 @@ 1 2 - 420 + 422 2 4 - 252 + 253 4 7 - 252 + 253 7 19 - 252 + 253 20 152 - 252 + 253 199 588 - 252 + 253 648 1289 - 252 + 253 1365 2347 - 252 + 253 2579 3510 - 252 + 253 3529 4710 - 252 + 253 4739 5323 - 252 + 253 5346 6023 - 252 + 253 6201 @@ -9403,7 +9683,7 @@ 1 2 - 449 + 450 2 @@ -9413,52 +9693,52 @@ 3 5 - 252 + 253 5 9 - 252 + 253 9 13 - 252 + 253 13 20 - 252 + 253 20 30 - 252 + 253 30 42 - 252 + 253 44 60 - 280 + 281 60 69 - 252 + 253 69 74 - 252 + 253 74 84 - 308 + 309 84 @@ -9479,67 +9759,67 @@ 1 5 - 22030 + 22089 5 9 - 22507 + 22567 9 15 - 21581 + 21638 15 23 - 20598 + 20653 23 32 - 21356 + 21413 32 44 - 20121 + 20175 44 60 - 19785 + 19837 60 80 - 20879 + 20935 80 103 - 19813 + 19866 103 130 - 20009 + 20063 130 159 - 19953 + 20006 159 193 - 19672 + 19725 193 296 - 13695 + 13731 @@ -9555,67 +9835,67 @@ 1 2 - 32105 + 32190 2 3 - 21244 + 21301 3 4 - 15491 + 15532 4 6 - 21917 + 21976 6 8 - 18409 + 18459 8 11 - 22507 + 22567 11 15 - 19785 + 19837 15 20 - 22816 + 22876 20 26 - 20458 + 20513 26 33 - 21917 + 21976 33 40 - 19897 + 19950 40 49 - 20037 + 20091 49 61 - 5416 + 5430 @@ -9631,27 +9911,27 @@ 1 2 - 130273 + 130621 2 3 - 68223 + 68405 3 4 - 40159 + 40266 4 6 - 21384 + 21441 6 11 - 1964 + 1969 @@ -9667,62 +9947,62 @@ 1 4 - 21609 + 21666 4 7 - 23826 + 23889 7 11 - 22507 + 22567 11 16 - 23686 + 23749 16 21 - 23629 + 23692 21 26 - 20683 + 20738 26 31 - 22282 + 22342 31 36 - 24078 + 24143 36 40 - 20879 + 20935 40 44 - 22591 + 22651 44 49 - 23152 + 23214 49 63 - 13077 + 13112 @@ -9738,62 +10018,62 @@ 1 4 - 23461 + 23524 4 7 - 22928 + 22989 7 11 - 22423 + 22483 11 16 - 23040 + 23102 16 21 - 21861 + 21920 21 26 - 19813 + 19866 26 32 - 22058 + 22117 32 38 - 23882 + 23946 38 43 - 22114 + 22173 43 47 - 19785 + 19837 47 52 - 22759 + 22820 52 69 - 17876 + 17924 @@ -9809,62 +10089,62 @@ 1 2 - 308 + 309 2 4 - 308 + 309 4 10 - 280 + 281 10 16 - 336 + 337 16 51 - 308 + 309 56 618 - 308 + 309 841 2290 - 308 + 309 2328 4142 - 308 + 309 4177 7140 - 308 + 309 8235 11725 - 308 + 309 12344 15458 - 308 + 309 15684 18219 - 308 + 309 18696 @@ -9885,62 +10165,62 @@ 1 2 - 449 + 450 2 4 - 280 + 281 4 6 - 280 + 281 6 12 - 308 + 309 12 41 - 308 + 309 50 114 - 308 + 309 115 128 - 308 + 309 128 137 - 280 + 281 137 142 - 336 + 337 142 146 - 280 + 281 146 148 - 280 + 281 148 152 - 308 + 309 152 @@ -9961,62 +10241,62 @@ 1 2 - 420 + 422 2 4 - 224 + 225 4 8 - 336 + 337 8 15 - 308 + 309 18 54 - 308 + 309 74 489 - 308 + 309 511 1338 - 308 + 309 1390 2420 - 308 + 309 2767 3740 - 308 + 309 3802 4530 - 308 + 309 4643 5303 - 308 + 309 5379 5736 - 308 + 309 5747 @@ -10037,62 +10317,62 @@ 1 2 - 364 + 365 2 4 - 280 + 281 4 9 - 336 + 337 9 14 - 336 + 337 14 22 - 336 + 337 23 28 - 308 + 309 28 36 - 308 + 309 36 41 - 308 + 309 41 47 - 308 + 309 47 56 - 308 + 309 56 64 - 308 + 309 64 72 - 308 + 309 @@ -10108,62 +10388,62 @@ 1 2 - 420 + 422 2 4 - 224 + 225 4 8 - 336 + 337 8 15 - 308 + 309 17 54 - 308 + 309 74 471 - 308 + 309 500 1307 - 308 + 309 1356 2389 - 308 + 309 2629 3660 - 308 + 309 3731 4490 - 308 + 309 4640 5281 - 308 + 309 5368 5729 - 308 + 309 5734 @@ -10178,23 +10458,23 @@ numlines - 806371 + 808525 element_id - 805249 + 807400 num_lines - 39371 + 39476 num_code - 33889 + 33980 num_comment - 18315 + 18364 @@ -10208,12 +10488,12 @@ 1 2 - 804128 + 806276 2 3 - 1121 + 1124 @@ -10229,12 +10509,12 @@ 1 2 - 804128 + 806276 2 3 - 1121 + 1124 @@ -10250,7 +10530,7 @@ 1 2 - 805000 + 807151 2 @@ -10271,27 +10551,27 @@ 1 2 - 26663 + 26734 2 3 - 3737 + 3747 3 5 - 3364 + 3373 5 37 - 3114 + 3123 41 1978 - 2491 + 2498 @@ -10307,27 +10587,27 @@ 1 2 - 27161 + 27234 2 3 - 4111 + 4122 3 4 - 2491 + 2498 4 7 - 3488 + 3497 7 12 - 2118 + 2123 @@ -10343,27 +10623,27 @@ 1 2 - 26787 + 26859 2 3 - 4111 + 4122 3 4 - 2491 + 2498 4 6 - 3114 + 3123 6 11 - 2865 + 2873 @@ -10379,32 +10659,32 @@ 1 2 - 21554 + 21612 2 3 - 3737 + 3747 3 4 - 2367 + 2373 4 13 - 2865 + 2873 14 197 - 2616 + 2623 205 2101 - 747 + 749 @@ -10420,32 +10700,32 @@ 1 2 - 21928 + 21987 2 3 - 3737 + 3747 3 4 - 2118 + 2123 4 6 - 1868 + 1873 6 9 - 2741 + 2748 9 13 - 1495 + 1499 @@ -10461,27 +10741,27 @@ 1 2 - 21679 + 21737 2 3 - 4360 + 4372 3 5 - 2865 + 2873 5 8 - 3114 + 3123 8 12 - 1868 + 1873 @@ -10497,32 +10777,32 @@ 1 2 - 11338 + 11368 2 3 - 1744 + 1748 3 4 - 1495 + 1499 4 7 - 1370 + 1374 8 22 - 1495 + 1499 42 3650 - 872 + 874 @@ -10538,32 +10818,32 @@ 1 2 - 11338 + 11368 2 3 - 1744 + 1748 3 4 - 1495 + 1499 4 7 - 1495 + 1499 8 27 - 1495 + 1499 30 48 - 747 + 749 @@ -10579,32 +10859,32 @@ 1 2 - 11338 + 11368 2 3 - 1744 + 1748 3 4 - 1744 + 1748 4 9 - 1495 + 1499 10 36 - 1619 + 1624 36 43 - 373 + 374 @@ -10614,31 +10894,31 @@ diagnostics - 1588 + 1484 id - 1588 + 1484 severity - 23 + 21 error_tag - 46 + 43 error_message - 161 + 150 full_error_message - 161 + 150 location - 69 + 64 @@ -10652,7 +10932,7 @@ 1 2 - 1588 + 1484 @@ -10668,7 +10948,7 @@ 1 2 - 1588 + 1484 @@ -10684,7 +10964,7 @@ 1 2 - 1588 + 1484 @@ -10700,7 +10980,7 @@ 1 2 - 1588 + 1484 @@ -10716,7 +10996,7 @@ 1 2 - 1588 + 1484 @@ -10732,7 +11012,7 @@ 69 70 - 23 + 21 @@ -10748,7 +11028,7 @@ 2 3 - 23 + 21 @@ -10764,7 +11044,7 @@ 7 8 - 23 + 21 @@ -10780,7 +11060,7 @@ 7 8 - 23 + 21 @@ -10796,7 +11076,7 @@ 3 4 - 23 + 21 @@ -10812,12 +11092,12 @@ 6 7 - 23 + 21 63 64 - 23 + 21 @@ -10833,7 +11113,7 @@ 1 2 - 46 + 43 @@ -10849,12 +11129,12 @@ 1 2 - 23 + 21 6 7 - 23 + 21 @@ -10870,12 +11150,12 @@ 1 2 - 23 + 21 6 7 - 23 + 21 @@ -10891,12 +11171,12 @@ 1 2 - 23 + 21 2 3 - 23 + 21 @@ -10912,12 +11192,12 @@ 1 2 - 138 + 129 63 64 - 23 + 21 @@ -10933,7 +11213,7 @@ 1 2 - 161 + 150 @@ -10949,7 +11229,7 @@ 1 2 - 161 + 150 @@ -10965,7 +11245,7 @@ 1 2 - 161 + 150 @@ -10981,7 +11261,7 @@ 1 2 - 161 + 150 @@ -10997,12 +11277,12 @@ 1 2 - 138 + 129 63 64 - 23 + 21 @@ -11018,7 +11298,7 @@ 1 2 - 161 + 150 @@ -11034,7 +11314,7 @@ 1 2 - 161 + 150 @@ -11050,7 +11330,7 @@ 1 2 - 161 + 150 @@ -11066,7 +11346,7 @@ 1 2 - 161 + 150 @@ -11082,12 +11362,12 @@ 3 4 - 46 + 43 63 64 - 23 + 21 @@ -11103,7 +11383,7 @@ 1 2 - 69 + 64 @@ -11119,7 +11399,7 @@ 1 2 - 69 + 64 @@ -11135,12 +11415,12 @@ 1 2 - 23 + 21 3 4 - 46 + 43 @@ -11156,12 +11436,12 @@ 1 2 - 23 + 21 3 4 - 46 + 43 @@ -11171,15 +11451,15 @@ files - 81417 + 74673 id - 81417 + 74673 name - 81417 + 74673 @@ -11193,7 +11473,7 @@ 1 2 - 81417 + 74673 @@ -11209,7 +11489,7 @@ 1 2 - 81417 + 74673 @@ -11219,15 +11499,15 @@ folders - 15468 + 14187 id - 15468 + 14187 name - 15468 + 14187 @@ -11241,7 +11521,7 @@ 1 2 - 15468 + 14187 @@ -11257,7 +11537,7 @@ 1 2 - 15468 + 14187 @@ -11267,15 +11547,15 @@ containerparent - 96859 + 88836 parent - 15468 + 14187 child - 96859 + 88836 @@ -11289,42 +11569,42 @@ 1 2 - 7529 + 6906 2 3 - 1898 + 1741 3 4 - 830 + 761 4 6 - 1252 + 1149 6 10 - 1213 + 1112 10 16 - 1252 + 1149 16 44 - 1160 + 1064 44 151 - 329 + 302 @@ -11340,7 +11620,7 @@ 1 2 - 96859 + 88836 @@ -11350,23 +11630,23 @@ fileannotations - 5244354 + 4809925 id - 7200 + 6603 kind - 26 + 24 name - 73307 + 67234 value - 49333 + 45246 @@ -11380,12 +11660,12 @@ 1 2 - 250 + 229 2 3 - 6949 + 6373 @@ -11401,62 +11681,62 @@ 1 86 - 540 + 495 88 206 - 540 + 495 212 291 - 553 + 507 291 359 - 540 + 495 362 401 - 540 + 495 402 479 - 540 + 495 480 549 - 316 + 290 550 551 - 1661 + 1523 553 628 - 540 + 495 631 753 - 567 + 520 753 1231 - 553 + 507 1234 2155 - 303 + 278 @@ -11472,67 +11752,67 @@ 1 98 - 540 + 495 102 244 - 540 + 495 244 351 - 540 + 495 352 434 - 553 + 507 434 490 - 553 + 507 490 628 - 540 + 495 632 702 - 79 + 72 706 707 - 1661 + 1523 710 939 - 540 + 495 939 1038 - 540 + 495 1066 1853 - 540 + 495 1853 3292 - 540 + 495 3423 3742 - 26 + 24 @@ -11548,12 +11828,12 @@ 527 528 - 13 + 12 546 547 - 13 + 12 @@ -11569,12 +11849,12 @@ 2 3 - 13 + 12 5557 5558 - 13 + 12 @@ -11590,12 +11870,12 @@ 1 2 - 13 + 12 3741 3742 - 13 + 12 @@ -11611,62 +11891,62 @@ 1 2 - 13767 + 12626 2 3 - 5446 + 4995 3 5 - 6316 + 5793 5 7 - 5116 + 4692 7 9 - 5736 + 5261 9 16 - 5406 + 4958 16 19 - 6105 + 5599 19 27 - 5314 + 4874 27 47 - 6039 + 5539 47 128 - 6145 + 5636 128 459 - 5775 + 5297 459 546 - 2136 + 1959 @@ -11682,7 +11962,7 @@ 1 2 - 73307 + 67234 @@ -11698,57 +11978,57 @@ 1 2 - 14466 + 13267 2 3 - 9600 + 8805 3 4 - 5116 + 4692 4 6 - 5077 + 4656 6 8 - 4272 + 3918 8 11 - 5921 + 5430 11 17 - 6738 + 6180 17 23 - 5868 + 5382 23 41 - 5841 + 5357 41 95 - 5578 + 5116 95 1726 - 4826 + 4426 @@ -11764,72 +12044,72 @@ 1 2 - 4193 + 3846 2 4 - 2044 + 1874 4 5 - 3982 + 3652 5 8 - 3072 + 2818 8 14 - 3705 + 3398 14 17 - 2413 + 2213 17 24 - 3797 + 3483 24 51 - 4417 + 4051 51 58 - 3784 + 3471 58 80 - 3718 + 3410 81 151 - 3850 + 3531 151 334 - 3718 + 3410 334 473 - 3745 + 3434 473 547 - 2887 + 2648 @@ -11845,12 +12125,12 @@ 1 2 - 49320 + 45234 2 3 - 13 + 12 @@ -11866,72 +12146,72 @@ 1 2 - 4246 + 3894 2 4 - 2386 + 2189 4 5 - 3811 + 3495 5 8 - 3098 + 2842 8 14 - 4351 + 3991 14 18 - 4312 + 3954 18 28 - 3995 + 3664 28 34 - 3929 + 3604 34 41 - 3995 + 3664 41 66 - 3731 + 3422 66 92 - 3837 + 3519 92 113 - 3731 + 3422 113 145 - 3784 + 3471 145 172 - 118 + 108 @@ -11941,15 +12221,15 @@ inmacroexpansion - 149602994 + 149995198 id - 24604999 + 24670750 inv - 3694108 + 3705246 @@ -11963,37 +12243,37 @@ 1 3 - 2202143 + 2209385 3 5 - 1471128 + 1474970 5 6 - 1616140 + 1620361 6 7 - 6565365 + 6582512 7 8 - 8696245 + 8718957 8 9 - 3547765 + 3557031 9 22 - 506210 + 507532 @@ -12009,57 +12289,57 @@ 1 2 - 528780 + 531651 2 3 - 741268 + 743204 3 4 - 480255 + 481510 4 7 - 274584 + 275301 7 8 - 281416 + 282151 8 9 - 329385 + 330245 9 10 - 3038 + 3046 10 11 - 443489 + 444648 11 337 - 306995 + 307797 339 423 - 281020 + 281754 423 7616 - 23872 + 23934 @@ -12069,15 +12349,15 @@ affectedbymacroexpansion - 48608644 + 48735594 id - 7026354 + 7044705 inv - 3793196 + 3803102 @@ -12091,37 +12371,37 @@ 1 2 - 3836670 + 3846690 2 3 - 764305 + 766301 3 4 - 360897 + 361840 4 5 - 770719 + 772732 5 12 - 533763 + 535157 12 50 - 554815 + 556264 50 9900 - 205182 + 205718 @@ -12137,67 +12417,67 @@ 1 4 - 312431 + 313247 4 7 - 315781 + 316606 7 9 - 300302 + 301086 9 12 - 342043 + 342937 12 13 - 454814 + 456002 13 14 - 225509 + 226098 14 15 - 406973 + 408036 15 16 - 165994 + 166428 16 17 - 376692 + 377676 17 18 - 200113 + 200635 18 20 - 343357 + 344253 20 25 - 284648 + 285391 25 207 - 64533 + 64702 @@ -12207,23 +12487,23 @@ macroinvocations - 39528251 + 39390474 id - 39528251 + 39390474 macro_id - 106974 + 181996 location - 1041654 + 5904613 kind - 26 + 108 @@ -12237,7 +12517,7 @@ 1 2 - 39528251 + 39390474 @@ -12253,7 +12533,7 @@ 1 2 - 39528251 + 39390474 @@ -12269,7 +12549,7 @@ 1 2 - 39528251 + 39390474 @@ -12285,52 +12565,47 @@ 1 2 - 22721 + 60738 2 3 - 20018 + 27781 3 4 - 7318 + 17921 4 - 6 - 9798 - - - 6 - 11 - 9204 + 5 + 9805 - 11 - 21 - 8848 + 5 + 7 + 14272 - 21 - 48 - 8149 + 7 + 13 + 14381 - 48 - 145 - 8096 + 13 + 33 + 13890 - 145 - 955 - 8030 + 33 + 185 + 13672 - 955 - 175302 - 4786 + 190 + 70079 + 9532 @@ -12346,37 +12621,42 @@ 1 2 - 58643 + 77243 2 3 - 13279 + 30559 3 4 - 6699 + 14326 4 - 6 - 8492 + 5 + 10349 - 6 - 13 - 9191 + 5 + 8 + 14054 - 13 - 67 - 8070 + 8 + 18 + 14108 - 67 - 4815 - 2597 + 18 + 88 + 13672 + + + 88 + 12162 + 7680 @@ -12392,12 +12672,12 @@ 1 2 - 98745 + 177475 2 3 - 8228 + 4521 @@ -12413,37 +12693,17 @@ 1 2 - 414921 + 5248369 2 3 - 246099 + 248072 3 - 4 - 110337 - - - 4 - 6 - 75496 - - - 6 - 11 - 79967 - - - 11 - 41 - 78595 - - - 41 - 226300 - 36238 + 70079 + 408170 @@ -12459,12 +12719,12 @@ 1 2 - 982813 + 5882442 2 - 367 - 58841 + 37 + 22170 @@ -12480,7 +12740,7 @@ 1 2 - 1041654 + 5904613 @@ -12494,14 +12754,14 @@ 12 - 22298 - 22299 - 13 + 1470 + 1471 + 54 - 2975179 - 2975180 - 13 + 721641 + 721642 + 54 @@ -12515,14 +12775,14 @@ 12 - 2368 - 2369 - 13 + 281 + 282 + 54 - 6368 - 6369 - 13 + 3143 + 3144 + 54 @@ -12536,14 +12796,14 @@ 12 - 7695 - 7696 - 13 + 1060 + 1061 + 54 - 71295 - 71296 - 13 + 107334 + 107335 + 54 @@ -12553,15 +12813,15 @@ macroparent - 34859187 + 32844542 id - 34859187 + 32844542 parent_id - 27314145 + 15561370 @@ -12575,7 +12835,7 @@ 1 2 - 34859187 + 32844542 @@ -12591,17 +12851,27 @@ 1 2 - 21276819 + 7669068 2 3 - 5036827 + 1551190 3 - 91 - 1000497 + 4 + 4552687 + + + 4 + 5 + 1263079 + + + 5 + 205 + 525343 @@ -12611,15 +12881,15 @@ macrolocationbind - 5544606 + 6882795 id - 3882779 + 4222137 location - 2759101 + 2746999 @@ -12633,22 +12903,27 @@ 1 2 - 3057283 + 2459682 2 3 - 469944 + 1326273 3 - 7 - 314994 + 4 + 8261 - 7 - 57 - 40556 + 4 + 5 + 413547 + + + 5 + 17 + 14372 @@ -12664,22 +12939,27 @@ 1 2 - 2198674 + 1393982 2 3 - 240048 + 907153 3 - 8 - 216611 + 4 + 8735 - 8 - 723 - 103767 + 4 + 5 + 410836 + + + 5 + 522 + 26291 @@ -12689,19 +12969,19 @@ macro_argument_unexpanded - 100507893 + 94316565 invocation - 30398388 + 30014759 argument_index - 870 + 798 text - 428569 + 393068 @@ -12715,22 +12995,22 @@ 1 2 - 9719830 + 11049162 2 3 - 12168939 + 11160894 3 4 - 6225849 + 5710115 4 67 - 2283768 + 2094586 @@ -12746,22 +13026,22 @@ 1 2 - 9947850 + 11258293 2 3 - 12189867 + 11180088 3 4 - 6031233 + 5531620 4 67 - 2229436 + 2044755 @@ -12777,17 +13057,17 @@ 46457 46458 - 764 + 701 46659 173182 - 65 + 60 645295 - 2305149 - 39 + 2481630 + 36 @@ -12803,17 +13083,17 @@ 2 3 - 764 + 701 13 1115 - 65 + 60 7702 22873 - 39 + 36 @@ -12829,57 +13109,57 @@ 1 2 - 50559 + 46371 2 3 - 77883 + 71431 3 4 - 28879 + 26487 4 5 - 43319 + 39731 5 6 - 48845 + 44799 6 9 - 35684 + 32728 9 15 - 35829 + 32861 15 27 - 32651 + 29946 27 57 - 33205 + 30454 57 517 - 32374 + 29692 518 485092 - 9336 + 8563 @@ -12895,17 +13175,17 @@ 1 2 - 303608 + 278458 2 3 - 112209 + 102914 3 9 - 12751 + 11695 @@ -12915,19 +13195,19 @@ macro_argument_expanded - 100507893 + 94316565 invocation - 30398388 + 30014759 argument_index - 870 + 798 text - 259602 + 238097 @@ -12941,22 +13221,22 @@ 1 2 - 9719830 + 11049162 2 3 - 12168939 + 11160894 3 4 - 6225849 + 5710115 4 67 - 2283768 + 2094586 @@ -12972,22 +13252,22 @@ 1 2 - 13403008 + 14427235 2 3 - 10499153 + 9629429 3 4 - 5260653 + 4824874 4 9 - 1235572 + 1133220 @@ -13003,17 +13283,17 @@ 46457 46458 - 764 + 701 46659 173182 - 65 + 60 645295 - 2305149 - 39 + 2481630 + 36 @@ -13029,17 +13309,17 @@ 1 2 - 751 + 689 2 96 - 65 + 60 950 16176 - 52 + 48 @@ -13055,57 +13335,57 @@ 1 2 - 27534 + 25253 2 3 - 34167 + 31337 3 4 - 56942 + 52225 4 5 - 20070 + 18408 5 6 - 3863 + 3543 6 7 - 22734 + 20851 7 10 - 21112 + 19363 10 19 - 22444 + 20585 19 51 - 19477 + 17863 51 253 - 19622 + 17997 254 - 990275 - 11631 + 1166756 + 10667 @@ -13121,17 +13401,17 @@ 1 2 - 131199 + 120330 2 3 - 111009 + 101813 3 66 - 17393 + 15953 @@ -13141,19 +13421,19 @@ functions - 4000085 + 4010769 id - 4000085 + 4010769 name - 1644140 + 1648531 kind - 996 + 999 @@ -13167,7 +13447,7 @@ 1 2 - 4000085 + 4010769 @@ -13183,7 +13463,7 @@ 1 2 - 4000085 + 4010769 @@ -13199,17 +13479,17 @@ 1 2 - 1398565 + 1402301 2 4 - 138797 + 139168 4 3162 - 106776 + 107062 @@ -13225,12 +13505,12 @@ 1 2 - 1641274 + 1645658 2 3 - 2865 + 2873 @@ -13342,15 +13622,15 @@ function_entry_point - 1430682 + 1141039 id - 1425982 + 1137291 entry_point - 1430682 + 1141039 @@ -13364,12 +13644,12 @@ 1 2 - 1421966 + 1134088 2 17 - 4016 + 3203 @@ -13385,7 +13665,7 @@ 1 2 - 1430682 + 1141039 @@ -13395,15 +13675,15 @@ function_return_type - 4017528 + 4028259 id - 4000085 + 4010769 return_type - 621224 + 622884 @@ -13417,12 +13697,12 @@ 1 2 - 3982642 + 3993280 2 3 - 17443 + 17489 @@ -13438,27 +13718,27 @@ 1 2 - 312107 + 312941 2 3 - 212930 + 213499 3 5 - 48342 + 48471 5 354 - 46598 + 46722 358 9897 - 1245 + 1249 @@ -13738,59 +14018,59 @@ purefunctions - 138354 + 138721 id - 138354 + 138721 function_deleted - 94264 + 88084 id - 94264 + 88084 function_defaulted - 55306 + 51679 id - 55306 + 51679 function_prototyped - 3998590 + 4009270 id - 3998590 + 4009270 deduction_guide_for_class - 5855 + 5871 id - 5855 + 5871 class_template - 2242 + 2248 @@ -13804,7 +14084,7 @@ 1 2 - 5855 + 5871 @@ -13820,12 +14100,12 @@ 1 2 - 1121 + 1124 2 3 - 373 + 374 3 @@ -13855,15 +14135,15 @@ member_function_this_type - 840354 + 676227 id - 840354 + 676227 this_type - 239686 + 177645 @@ -13877,7 +14157,7 @@ 1 2 - 840354 + 676227 @@ -13893,37 +14173,37 @@ 1 2 - 73657 + 48721 2 3 - 70154 + 36853 3 4 - 33709 + 32855 4 5 - 15380 + 19988 5 - 7 - 21832 + 6 + 12867 - 7 - 13 - 18884 + 6 + 10 + 14491 - 13 - 530 - 6066 + 10 + 65 + 11868 @@ -13933,27 +14213,27 @@ fun_decls - 4144115 + 4155684 id - 4138135 + 4149688 function - 3975664 + 3986284 type_id - 613250 + 614888 name - 1642645 + 1647032 location - 2762494 + 2769873 @@ -13967,7 +14247,7 @@ 1 2 - 4138135 + 4149688 @@ -13983,12 +14263,12 @@ 1 2 - 4132154 + 4143691 2 3 - 5980 + 5996 @@ -14004,7 +14284,7 @@ 1 2 - 4138135 + 4149688 @@ -14020,7 +14300,7 @@ 1 2 - 4138135 + 4149688 @@ -14036,12 +14316,12 @@ 1 2 - 3826525 + 3836247 2 4 - 149138 + 150036 @@ -14057,12 +14337,12 @@ 1 2 - 3957224 + 3967795 2 3 - 18439 + 18489 @@ -14078,7 +14358,7 @@ 1 2 - 3975664 + 3986284 @@ -14094,12 +14374,12 @@ 1 2 - 3832755 + 3842993 2 4 - 142909 + 143290 @@ -14115,27 +14395,27 @@ 1 2 - 297405 + 298199 2 3 - 219783 + 220370 3 5 - 48716 + 48846 5 354 - 46099 + 46222 358 - 10242 - 1245 + 10246 + 1249 @@ -14151,22 +14431,22 @@ 1 2 - 307497 + 308318 2 3 - 211061 + 211625 3 5 - 48342 + 48471 5 1033 - 46099 + 46222 1483 @@ -14187,22 +14467,22 @@ 1 2 - 493267 + 494584 2 3 - 52578 + 52719 3 7 - 50958 + 51094 7 2211 - 16446 + 16490 @@ -14218,22 +14498,22 @@ 1 2 - 456761 + 457981 2 3 - 69274 + 69459 3 6 - 55693 + 55842 6 4728 - 31522 + 31606 @@ -14249,22 +14529,22 @@ 1 2 - 1294529 + 1297737 2 3 - 183152 + 183892 3 10 - 125341 + 125551 10 3169 - 39620 + 39851 @@ -14280,17 +14560,17 @@ 1 2 - 1398067 + 1401801 2 4 - 139171 + 139543 4 3162 - 105406 + 105687 @@ -14306,12 +14586,12 @@ 1 2 - 1552813 + 1556960 2 1596 - 89832 + 90072 @@ -14327,17 +14607,17 @@ 1 2 - 1318576 + 1322098 2 3 - 207947 + 208502 3 1592 - 116121 + 116431 @@ -14353,17 +14633,17 @@ 1 2 - 2383729 + 2390096 2 3 - 237102 + 237735 3 211 - 141663 + 142041 @@ -14379,17 +14659,17 @@ 1 2 - 2387467 + 2393844 2 3 - 233862 + 234487 3 211 - 141164 + 141541 @@ -14405,12 +14685,12 @@ 1 2 - 2647494 + 2654566 2 211 - 115000 + 115307 @@ -14426,12 +14706,12 @@ 1 2 - 2723372 + 2730646 2 8 - 39122 + 39226 @@ -14441,48 +14721,48 @@ fun_def - 1583380 + 1413170 id - 1583380 + 1413170 fun_specialized - 8413 + 8435 id - 8413 + 8435 fun_implicit - 271 + 272 id - 271 + 272 fun_decl_specifiers - 4091287 + 4102216 id - 1683761 + 1688258 name - 1370 + 1374 @@ -14496,22 +14776,22 @@ 1 2 - 360574 + 361537 2 3 - 261771 + 262470 3 4 - 1038489 + 1041263 4 5 - 22925 + 22986 @@ -14708,26 +14988,26 @@ fun_decl_empty_throws - 435875 + 437031 fun_decl - 435875 + 437031 fun_decl_noexcept - 177863 + 141854 fun_decl - 177863 + 141854 constant - 177265 + 141377 @@ -14741,7 +15021,7 @@ 1 2 - 177863 + 141854 @@ -14757,12 +15037,12 @@ 1 2 - 176709 + 140934 2 4 - 555 + 442 @@ -14772,22 +15052,22 @@ fun_decl_empty_noexcept - 1160716 + 1163816 fun_decl - 1160716 + 1163816 fun_decl_typedef_type - 2769 + 2763 fun_decl - 2769 + 2763 typedeftype_id @@ -14805,7 +15085,7 @@ 1 2 - 2769 + 2763 @@ -14881,19 +15161,19 @@ fun_requires - 31152 + 29110 id - 10821 + 10112 kind - 46 + 43 constraint - 30899 + 28873 @@ -14907,12 +15187,12 @@ 1 2 - 10752 + 10047 2 3 - 69 + 64 @@ -14928,32 +15208,32 @@ 1 2 - 7782 + 7272 2 3 - 529 + 494 3 6 - 920 + 860 6 13 - 345 + 322 13 14 - 1220 + 1140 19 20 - 23 + 21 @@ -14969,12 +15249,12 @@ 208 209 - 23 + 21 265 266 - 23 + 21 @@ -14990,12 +15270,12 @@ 580 581 - 23 + 21 762 763 - 23 + 21 @@ -15011,12 +15291,12 @@ 1 2 - 30645 + 28636 2 3 - 253 + 236 @@ -15032,7 +15312,7 @@ 1 2 - 30899 + 28873 @@ -15042,19 +15322,19 @@ param_decl_bind - 7170500 + 7189902 id - 7170500 + 7189902 index - 7974 + 7995 fun_decl - 3468567 + 3478082 @@ -15068,7 +15348,7 @@ 1 2 - 7170500 + 7189902 @@ -15084,7 +15364,7 @@ 1 2 - 7170500 + 7189902 @@ -15100,31 +15380,31 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 16 20 - 622 + 624 25 143 - 622 + 624 332 15841 - 622 + 624 - 27839 - 27840 + 27841 + 27842 124 @@ -15141,31 +15421,31 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 16 20 - 622 + 624 25 143 - 622 + 624 332 15841 - 622 + 624 - 27839 - 27840 + 27841 + 27842 124 @@ -15182,27 +15462,27 @@ 1 2 - 1495001 + 1499244 2 3 - 954264 + 956813 3 4 - 578364 + 579909 4 5 - 282329 + 283083 5 65 - 158607 + 159031 @@ -15218,27 +15498,27 @@ 1 2 - 1495001 + 1499244 2 3 - 954264 + 956813 3 4 - 578364 + 579909 4 5 - 282329 + 283083 5 65 - 158607 + 159031 @@ -15248,27 +15528,27 @@ var_decls - 9244489 + 9269431 id - 9237636 + 9262560 variable - 8948454 + 8972356 type_id - 1458495 + 1462391 name - 850103 + 852374 location - 6187953 + 6204481 @@ -15282,7 +15562,7 @@ 1 2 - 9237636 + 9262560 @@ -15298,12 +15578,12 @@ 1 2 - 9230783 + 9255689 2 3 - 6852 + 6870 @@ -15319,7 +15599,7 @@ 1 2 - 9237636 + 9262560 @@ -15335,7 +15615,7 @@ 1 2 - 9237636 + 9262560 @@ -15351,12 +15631,12 @@ 1 2 - 8672229 + 8695144 2 4 - 276224 + 277212 @@ -15372,12 +15652,12 @@ 1 2 - 8909830 + 8933629 2 3 - 38624 + 38727 @@ -15393,12 +15673,12 @@ 1 2 - 8843047 + 8866668 2 4 - 105406 + 105687 @@ -15414,12 +15694,12 @@ 1 2 - 8697272 + 8720504 2 4 - 251181 + 251852 @@ -15435,27 +15715,27 @@ 1 2 - 852471 + 854748 2 3 - 284198 + 284957 3 5 - 127708 + 128049 5 11 - 112632 + 112933 11 2944 - 81484 + 81702 @@ -15471,27 +15751,27 @@ 1 2 - 872779 + 875111 2 3 - 269745 + 270466 3 5 - 123098 + 123427 5 11 - 112632 + 112933 11 2859 - 80238 + 80452 @@ -15507,22 +15787,22 @@ 1 2 - 1121967 + 1124964 2 3 - 192622 + 193136 3 7 - 114875 + 115182 7 1038 - 29030 + 29107 @@ -15538,27 +15818,27 @@ 1 2 - 988278 + 990918 2 3 - 218537 + 219121 3 6 - 133689 + 134046 6 95 - 109517 + 109810 97 2570 - 8472 + 8495 @@ -15574,32 +15854,32 @@ 1 2 - 464610 + 465851 2 3 - 165336 + 165777 3 4 - 59929 + 60089 4 7 - 65785 + 65961 7 26 - 64165 + 64337 26 - 26620 - 30276 + 26622 + 30357 @@ -15615,32 +15895,32 @@ 1 2 - 477443 + 478718 2 3 - 164588 + 165028 3 4 - 54821 + 54967 4 8 - 71641 + 71832 8 46 - 63792 + 63962 46 26187 - 17816 + 17864 @@ -15656,22 +15936,22 @@ 1 2 - 653120 + 654865 2 3 - 110140 + 110435 3 11 - 65162 + 65336 11 3460 - 21679 + 21737 @@ -15687,27 +15967,27 @@ 1 2 - 491771 + 493085 2 3 - 182779 + 183267 3 4 - 52204 + 52344 4 8 - 65037 + 65211 8 22104 - 58309 + 58465 @@ -15723,12 +16003,12 @@ 1 2 - 5741533 + 5756869 2 - 2941 - 446419 + 2943 + 447612 @@ -15744,12 +16024,12 @@ 1 2 - 5765455 + 5780855 2 2935 - 422497 + 423626 @@ -15765,12 +16045,12 @@ 1 2 - 5904751 + 5920523 2 2555 - 283201 + 283958 @@ -15786,12 +16066,12 @@ 1 2 - 6175493 + 6191988 2 5 - 12459 + 12492 @@ -15801,37 +16081,37 @@ var_def - 3721867 + 3731808 id - 3721867 + 3731808 var_specialized - 690 + 645 id - 690 + 645 var_decl_specifiers - 487660 + 488962 id - 487660 + 488962 name - 498 + 499 @@ -15845,7 +16125,7 @@ 1 2 - 487660 + 488962 @@ -15886,26 +16166,26 @@ is_structured_binding - 1013 + 946 id - 1013 + 946 var_requires - 414 + 387 id - 69 + 64 constraint - 414 + 387 @@ -15919,17 +16199,17 @@ 2 3 - 23 + 21 3 4 - 23 + 21 13 14 - 23 + 21 @@ -15945,7 +16225,7 @@ 1 2 - 414 + 387 @@ -15955,19 +16235,19 @@ type_decls - 1840533 + 1687983 id - 1840533 + 1687983 type_id - 1800233 + 1651022 location - 1446052 + 1326265 @@ -15981,7 +16261,7 @@ 1 2 - 1840533 + 1687983 @@ -15997,7 +16277,7 @@ 1 2 - 1840533 + 1687983 @@ -16013,12 +16293,12 @@ 1 2 - 1771235 + 1624425 2 24 - 28998 + 26596 @@ -16034,12 +16314,12 @@ 1 2 - 1772527 + 1625611 2 24 - 27706 + 25411 @@ -16055,12 +16335,12 @@ 1 2 - 1371558 + 1257941 2 651 - 74494 + 68323 @@ -16076,12 +16356,12 @@ 1 2 - 1372863 + 1259139 2 651 - 73188 + 67126 @@ -16091,37 +16371,37 @@ type_def - 1262896 + 1158256 id - 1262896 + 1158256 type_decl_top - 670739 + 672531 type_decl - 670739 + 672531 type_requires - 8219 + 7680 id - 2187 + 2043 constraint - 8196 + 7659 @@ -16135,27 +16415,27 @@ 1 2 - 1082 + 1011 2 5 - 115 + 107 5 6 - 644 + 602 6 13 - 184 + 172 13 14 - 161 + 150 @@ -16171,12 +16451,12 @@ 1 2 - 8173 + 7637 2 3 - 23 + 21 @@ -16186,23 +16466,23 @@ namespace_decls - 429821 + 430961 id - 429821 + 430961 namespace_id - 1954 + 1959 location - 429821 + 430961 bodylocation - 429821 + 430961 @@ -16216,7 +16496,7 @@ 1 2 - 429821 + 430961 @@ -16232,7 +16512,7 @@ 1 2 - 429821 + 430961 @@ -16248,7 +16528,7 @@ 1 2 - 429821 + 430961 @@ -16264,7 +16544,7 @@ 1 2 - 413 + 414 2 @@ -16274,42 +16554,42 @@ 3 6 - 180 + 181 6 15 - 163 + 164 15 34 - 154 + 155 35 62 - 163 + 164 63 87 - 154 + 155 90 142 - 154 + 155 143 219 - 154 + 155 263 1505 - 154 + 155 1854 @@ -16330,7 +16610,7 @@ 1 2 - 413 + 414 2 @@ -16340,42 +16620,42 @@ 3 6 - 180 + 181 6 15 - 163 + 164 15 34 - 154 + 155 35 62 - 163 + 164 63 87 - 154 + 155 90 142 - 154 + 155 143 219 - 154 + 155 263 1505 - 154 + 155 1854 @@ -16396,7 +16676,7 @@ 1 2 - 413 + 414 2 @@ -16406,42 +16686,42 @@ 3 6 - 180 + 181 6 15 - 163 + 164 15 34 - 154 + 155 35 62 - 163 + 164 63 87 - 154 + 155 90 142 - 154 + 155 143 219 - 154 + 155 263 1505 - 154 + 155 1854 @@ -16462,7 +16742,7 @@ 1 2 - 429821 + 430961 @@ -16478,7 +16758,7 @@ 1 2 - 429821 + 430961 @@ -16494,7 +16774,7 @@ 1 2 - 429821 + 430961 @@ -16510,7 +16790,7 @@ 1 2 - 429821 + 430961 @@ -16526,7 +16806,7 @@ 1 2 - 429821 + 430961 @@ -16542,7 +16822,7 @@ 1 2 - 429821 + 430961 @@ -16552,23 +16832,23 @@ usings - 339714 + 311355 id - 339714 + 311355 element_id - 73742 + 67416 location - 33521 + 30744 kind - 26 + 24 @@ -16582,7 +16862,7 @@ 1 2 - 339714 + 311355 @@ -16598,7 +16878,7 @@ 1 2 - 339714 + 311355 @@ -16614,7 +16894,7 @@ 1 2 - 339714 + 311355 @@ -16630,17 +16910,17 @@ 1 2 - 64089 + 58562 2 5 - 6725 + 6168 5 134 - 2927 + 2685 @@ -16656,17 +16936,17 @@ 1 2 - 64089 + 58562 2 5 - 6725 + 6168 5 134 - 2927 + 2685 @@ -16682,7 +16962,7 @@ 1 2 - 73742 + 67416 @@ -16698,22 +16978,22 @@ 1 2 - 26440 + 24250 2 4 - 2861 + 2624 4 132 - 2439 + 2237 145 - 367 - 1780 + 365 + 1632 @@ -16729,22 +17009,22 @@ 1 2 - 26440 + 24250 2 4 - 2861 + 2624 4 132 - 2439 + 2237 145 - 367 - 1780 + 365 + 1632 @@ -16760,7 +17040,7 @@ 1 2 - 33521 + 30744 @@ -16776,12 +17056,12 @@ 393 394 - 13 + 12 - 25368 - 25369 - 13 + 25350 + 25351 + 12 @@ -16797,12 +17077,12 @@ 214 215 - 13 + 12 - 5378 - 5379 - 13 + 5360 + 5361 + 12 @@ -16818,12 +17098,12 @@ 356 357 - 13 + 12 2186 2187 - 13 + 12 @@ -16833,15 +17113,15 @@ using_container - 722789 + 662697 parent - 26479 + 24250 child - 339714 + 311355 @@ -16855,42 +17135,42 @@ 1 2 - 12250 + 11236 2 3 - 1951 + 1790 3 6 - 2241 + 2056 6 7 - 2861 + 2588 7 27 - 2017 + 1850 27 136 - 1028 + 943 145 146 - 3270 + 2999 146 437 - 857 + 786 @@ -16906,27 +17186,27 @@ 1 2 - 121282 + 111017 2 3 - 150162 + 137723 3 4 - 24567 + 22532 4 5 - 33323 + 30563 5 65 - 10378 + 9518 @@ -16936,27 +17216,27 @@ static_asserts - 183028 + 183513 id - 183028 + 183513 condition - 183028 + 183513 message - 40988 + 41097 location - 23861 + 23924 enclosing - 6630 + 6648 @@ -16970,7 +17250,7 @@ 1 2 - 183028 + 183513 @@ -16986,7 +17266,7 @@ 1 2 - 183028 + 183513 @@ -17002,7 +17282,7 @@ 1 2 - 183028 + 183513 @@ -17018,7 +17298,7 @@ 1 2 - 183028 + 183513 @@ -17034,7 +17314,7 @@ 1 2 - 183028 + 183513 @@ -17050,7 +17330,7 @@ 1 2 - 183028 + 183513 @@ -17066,7 +17346,7 @@ 1 2 - 183028 + 183513 @@ -17082,7 +17362,7 @@ 1 2 - 183028 + 183513 @@ -17098,32 +17378,32 @@ 1 2 - 30155 + 30235 2 3 - 671 + 673 3 4 - 3866 + 3876 4 12 - 2178 + 2184 12 17 - 3306 + 3315 17 513 - 809 + 811 @@ -17139,32 +17419,32 @@ 1 2 - 30155 + 30235 2 3 - 671 + 673 3 4 - 3866 + 3876 4 12 - 2178 + 2184 12 17 - 3306 + 3315 17 513 - 809 + 811 @@ -17180,12 +17460,12 @@ 1 2 - 37983 + 38084 2 33 - 3005 + 3013 @@ -17201,7 +17481,7 @@ 1 2 - 32084 + 32169 2 @@ -17211,17 +17491,17 @@ 3 4 - 3616 + 3626 4 12 - 1980 + 1985 12 43 - 2953 + 2961 @@ -17237,37 +17517,37 @@ 1 2 - 4477 + 4489 2 3 - 3883 + 3893 3 4 - 1868 + 1873 4 5 - 111 + 112 5 6 - 5011 + 5024 6 13 - 456 + 457 14 15 - 2807 + 2814 16 @@ -17277,12 +17557,12 @@ 17 18 - 4658 + 4670 19 52 - 525 + 526 @@ -17298,37 +17578,37 @@ 1 2 - 4477 + 4489 2 3 - 3883 + 3893 3 4 - 1868 + 1873 4 5 - 111 + 112 5 6 - 5011 + 5024 6 13 - 456 + 457 14 15 - 2807 + 2814 16 @@ -17338,12 +17618,12 @@ 17 18 - 4658 + 4670 19 52 - 525 + 526 @@ -17359,22 +17639,22 @@ 1 2 - 7224 + 7243 2 3 - 8137 + 8159 3 4 - 8249 + 8271 4 7 - 249 + 250 @@ -17390,32 +17670,32 @@ 1 2 - 5313 + 5327 2 3 - 8516 + 8538 3 4 - 1593 + 1597 4 5 - 5028 + 5042 5 13 - 516 + 518 13 14 - 2807 + 2814 16 @@ -17436,17 +17716,17 @@ 1 2 - 5468 + 5482 2 3 - 559 + 561 3 210 - 499 + 500 223 @@ -17467,17 +17747,17 @@ 1 2 - 5468 + 5482 2 3 - 559 + 561 3 210 - 499 + 500 223 @@ -17498,17 +17778,17 @@ 1 2 - 5631 + 5646 2 3 - 551 + 552 3 2936 - 447 + 448 @@ -17524,17 +17804,17 @@ 1 2 - 5614 + 5629 2 3 - 568 + 569 3 1929 - 447 + 448 @@ -17544,23 +17824,23 @@ params - 6965543 + 6984148 id - 6939004 + 6957539 function - 3356931 + 3365898 index - 7974 + 7995 type_id - 1222140 + 1225405 @@ -17574,7 +17854,7 @@ 1 2 - 6939004 + 6957539 @@ -17590,7 +17870,7 @@ 1 2 - 6939004 + 6957539 @@ -17606,12 +17886,12 @@ 1 2 - 6912466 + 6930930 2 3 - 26538 + 26609 @@ -17627,27 +17907,27 @@ 1 2 - 1458993 + 1462890 2 3 - 906295 + 908716 3 4 - 559675 + 561170 4 5 - 276598 + 277337 5 65 - 155368 + 155783 @@ -17663,27 +17943,27 @@ 1 2 - 1458993 + 1462890 2 3 - 906295 + 908716 3 4 - 559675 + 561170 4 5 - 276598 + 277337 5 65 - 155368 + 155783 @@ -17699,22 +17979,22 @@ 1 2 - 1758766 + 1763464 2 3 - 1005721 + 1008407 3 4 - 435829 + 436993 4 11 - 156614 + 157032 @@ -17730,27 +18010,27 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 14 18 - 622 + 624 23 138 - 622 + 624 323 15234 - 622 + 624 26943 @@ -17771,27 +18051,27 @@ 2 3 - 3987 + 3997 6 7 - 1993 + 1998 14 18 - 622 + 624 23 138 - 622 + 624 323 15234 - 622 + 624 26943 @@ -17812,27 +18092,27 @@ 1 2 - 3987 + 3997 2 3 - 1993 + 1998 4 7 - 622 + 624 9 54 - 622 + 624 115 2700 - 622 + 624 7528 @@ -17853,27 +18133,27 @@ 1 2 - 738841 + 740814 2 3 - 241338 + 241982 3 5 - 93569 + 93819 5 13 - 93445 + 93694 13 2570 - 54945 + 55092 @@ -17889,27 +18169,27 @@ 1 2 - 820948 + 823141 2 3 - 180661 + 181143 3 6 - 106278 + 106562 6 27 - 92199 + 92445 27 2558 - 22053 + 22112 @@ -17925,17 +18205,17 @@ 1 2 - 997373 + 1000037 2 3 - 166581 + 167026 3 65 - 58185 + 58340 @@ -17945,15 +18225,15 @@ overrides - 169371 + 169820 new - 160140 + 160564 old - 19073 + 19124 @@ -17967,12 +18247,12 @@ 1 2 - 150917 + 151317 2 4 - 9222 + 9246 @@ -17988,32 +18268,32 @@ 1 2 - 10436 + 10464 2 3 - 2583 + 2590 3 4 - 1730 + 1735 4 6 - 1575 + 1580 6 18 - 1438 + 1441 18 230 - 1308 + 1312 @@ -18023,19 +18303,19 @@ membervariables - 1491860 + 1495845 id - 1489415 + 1493394 type_id - 453914 + 455127 name - 639011 + 640718 @@ -18049,12 +18329,12 @@ 1 2 - 1487079 + 1491051 2 4 - 2336 + 2342 @@ -18070,7 +18350,7 @@ 1 2 - 1489415 + 1493394 @@ -18086,22 +18366,22 @@ 1 2 - 336836 + 337736 2 3 - 71930 + 72123 3 10 - 35041 + 35135 10 4422 - 10105 + 10132 @@ -18117,22 +18397,22 @@ 1 2 - 354330 + 355276 2 3 - 63944 + 64115 3 49 - 34118 + 34209 56 2175 - 1521 + 1525 @@ -18148,22 +18428,22 @@ 1 2 - 419850 + 420972 2 3 - 121804 + 122129 3 5 - 57316 + 57469 5 654 - 40040 + 40147 @@ -18179,17 +18459,17 @@ 1 2 - 522314 + 523709 2 3 - 72311 + 72504 3 658 - 44386 + 44504 @@ -18199,19 +18479,19 @@ globalvariables - 486788 + 488088 id - 486788 + 488088 type_id - 10341 + 10368 name - 112134 + 112433 @@ -18225,7 +18505,7 @@ 1 2 - 486788 + 488088 @@ -18241,7 +18521,7 @@ 1 2 - 486788 + 488088 @@ -18257,32 +18537,32 @@ 1 2 - 6977 + 6995 2 3 - 373 + 374 3 5 - 747 + 749 5 20 - 872 + 874 20 74 - 872 + 874 152 2214 - 498 + 499 @@ -18298,32 +18578,32 @@ 1 2 - 7101 + 7120 2 3 - 373 + 374 3 5 - 747 + 749 5 20 - 747 + 749 20 74 - 872 + 874 124 226 - 498 + 499 @@ -18339,17 +18619,17 @@ 1 2 - 95065 + 95319 2 7 - 8721 + 8744 7 604 - 8347 + 8370 @@ -18365,12 +18645,12 @@ 1 2 - 96684 + 96943 2 3 - 15200 + 15241 3 @@ -18385,19 +18665,19 @@ localvariables - 727548 + 725943 id - 727548 + 725943 type_id - 53530 + 53416 name - 101739 + 101515 @@ -18411,7 +18691,7 @@ 1 2 - 727548 + 725943 @@ -18427,7 +18707,7 @@ 1 2 - 727548 + 725943 @@ -18443,37 +18723,37 @@ 1 2 - 28944 + 28884 2 3 - 7842 + 7824 3 4 - 4033 + 4024 4 6 - 4057 + 4048 6 12 - 4157 + 4148 12 166 - 4017 + 4008 168 19320 - 477 + 476 @@ -18489,22 +18769,22 @@ 1 2 - 38444 + 38363 2 3 - 6714 + 6699 3 5 - 4474 + 4465 5 3502 - 3897 + 3888 @@ -18520,32 +18800,32 @@ 1 2 - 62592 + 62454 2 3 - 16077 + 16042 3 4 - 6545 + 6531 4 8 - 8147 + 8129 8 135 - 7633 + 7616 135 7544 - 742 + 740 @@ -18561,22 +18841,22 @@ 1 2 - 84658 + 84471 2 3 - 8436 + 8417 3 15 - 7689 + 7672 15 1509 - 955 + 953 @@ -18586,15 +18866,15 @@ autoderivation - 228629 + 229240 var - 228629 + 229240 derivation_type - 622 + 624 @@ -18608,7 +18888,7 @@ 1 2 - 228629 + 229240 @@ -18654,15 +18934,15 @@ orphaned_variables - 55584 + 44331 var - 55584 + 44331 function - 51483 + 41060 @@ -18676,7 +18956,7 @@ 1 2 - 55584 + 44331 @@ -18692,12 +18972,12 @@ 1 2 - 50415 + 40208 2 47 - 1068 + 851 @@ -18707,19 +18987,19 @@ enumconstants - 343845 + 344763 id - 343845 + 344763 parent - 41181 + 41291 index - 13908 + 13945 type_id @@ -18727,11 +19007,11 @@ name - 343464 + 344382 location - 316517 + 317363 @@ -18745,7 +19025,7 @@ 1 2 - 343845 + 344763 @@ -18761,7 +19041,7 @@ 1 2 - 343845 + 344763 @@ -18777,7 +19057,7 @@ 1 2 - 343845 + 344763 @@ -18793,7 +19073,7 @@ 1 2 - 343845 + 344763 @@ -18809,7 +19089,7 @@ 1 2 - 343845 + 344763 @@ -18825,57 +19105,57 @@ 1 2 - 1521 + 1525 2 3 - 5704 + 5719 3 4 - 8692 + 8715 4 5 - 5487 + 5501 5 6 - 4617 + 4630 6 7 - 2662 + 2669 7 8 - 1955 + 1961 8 11 - 3802 + 3813 11 17 - 3151 + 3159 17 64 - 3096 + 3104 79 257 - 488 + 490 @@ -18891,57 +19171,57 @@ 1 2 - 1521 + 1525 2 3 - 5704 + 5719 3 4 - 8692 + 8715 4 5 - 5487 + 5501 5 6 - 4617 + 4630 6 7 - 2662 + 2669 7 8 - 1955 + 1961 8 11 - 3802 + 3813 11 17 - 3151 + 3159 17 64 - 3096 + 3104 79 257 - 488 + 490 @@ -18957,7 +19237,7 @@ 1 2 - 41181 + 41291 @@ -18973,57 +19253,57 @@ 1 2 - 1521 + 1525 2 3 - 5704 + 5719 3 4 - 8692 + 8715 4 5 - 5487 + 5501 5 6 - 4617 + 4630 6 7 - 2662 + 2669 7 8 - 1955 + 1961 8 11 - 3802 + 3813 11 17 - 3151 + 3159 17 64 - 3096 + 3104 79 257 - 488 + 490 @@ -19039,52 +19319,52 @@ 1 2 - 2118 + 2124 2 3 - 5921 + 5937 3 4 - 8746 + 8770 4 5 - 5432 + 5447 5 6 - 4617 + 4630 6 7 - 2607 + 2614 7 8 - 1847 + 1852 8 11 - 3694 + 3704 11 18 - 3096 + 3104 18 257 - 3096 + 3104 @@ -19100,47 +19380,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 759 - 1032 + 1034 @@ -19156,47 +19436,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 759 - 1032 + 1034 @@ -19212,7 +19492,7 @@ 1 2 - 13908 + 13945 @@ -19228,47 +19508,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 756 - 1032 + 1034 @@ -19284,47 +19564,47 @@ 1 2 - 2770 + 2778 2 3 - 2227 + 2233 3 4 - 2281 + 2287 4 5 - 1249 + 1252 5 9 - 1086 + 1089 9 12 - 1086 + 1089 12 19 - 1086 + 1089 19 55 - 1086 + 1089 58 759 - 1032 + 1034 @@ -19420,12 +19700,12 @@ 1 2 - 343084 + 344000 2 3 - 380 + 381 @@ -19441,12 +19721,12 @@ 1 2 - 343084 + 344000 2 3 - 380 + 381 @@ -19462,7 +19742,7 @@ 1 2 - 343464 + 344382 @@ -19478,7 +19758,7 @@ 1 2 - 343464 + 344382 @@ -19494,12 +19774,12 @@ 1 2 - 343084 + 344000 2 3 - 380 + 381 @@ -19515,12 +19795,12 @@ 1 2 - 315485 + 316328 2 205 - 1032 + 1034 @@ -19536,7 +19816,7 @@ 1 2 - 316517 + 317363 @@ -19552,12 +19832,12 @@ 1 2 - 315485 + 316328 2 205 - 1032 + 1034 @@ -19573,7 +19853,7 @@ 1 2 - 316517 + 317363 @@ -19589,12 +19869,12 @@ 1 2 - 315485 + 316328 2 205 - 1032 + 1034 @@ -19604,31 +19884,31 @@ builtintypes - 7101 + 7120 id - 7101 + 7120 name - 7101 + 7120 kind - 7101 + 7120 size - 872 + 874 sign - 373 + 374 alignment - 622 + 624 @@ -19642,7 +19922,7 @@ 1 2 - 7101 + 7120 @@ -19658,7 +19938,7 @@ 1 2 - 7101 + 7120 @@ -19674,7 +19954,7 @@ 1 2 - 7101 + 7120 @@ -19690,7 +19970,7 @@ 1 2 - 7101 + 7120 @@ -19706,7 +19986,7 @@ 1 2 - 7101 + 7120 @@ -19722,7 +20002,7 @@ 1 2 - 7101 + 7120 @@ -19738,7 +20018,7 @@ 1 2 - 7101 + 7120 @@ -19754,7 +20034,7 @@ 1 2 - 7101 + 7120 @@ -19770,7 +20050,7 @@ 1 2 - 7101 + 7120 @@ -19786,7 +20066,7 @@ 1 2 - 7101 + 7120 @@ -19802,7 +20082,7 @@ 1 2 - 7101 + 7120 @@ -19818,7 +20098,7 @@ 1 2 - 7101 + 7120 @@ -19834,7 +20114,7 @@ 1 2 - 7101 + 7120 @@ -19850,7 +20130,7 @@ 1 2 - 7101 + 7120 @@ -19866,7 +20146,7 @@ 1 2 - 7101 + 7120 @@ -20025,7 +20305,7 @@ 3 4 - 622 + 624 @@ -20041,12 +20321,12 @@ 1 2 - 498 + 499 2 3 - 373 + 374 @@ -20161,7 +20441,7 @@ 5 6 - 373 + 374 @@ -20285,7 +20565,7 @@ 2 3 - 622 + 624 @@ -20301,7 +20581,7 @@ 3 4 - 622 + 624 @@ -20311,23 +20591,23 @@ derivedtypes - 3036227 + 3044337 id - 3036227 + 3044337 name - 1470331 + 1474259 kind - 747 + 749 type_id - 1942542 + 1947731 @@ -20341,7 +20621,7 @@ 1 2 - 3036227 + 3044337 @@ -20357,7 +20637,7 @@ 1 2 - 3036227 + 3044337 @@ -20373,7 +20653,7 @@ 1 2 - 3036227 + 3044337 @@ -20389,17 +20669,17 @@ 1 2 - 1353712 + 1357327 2 30 - 110514 + 110809 30 4274 - 6105 + 6121 @@ -20415,7 +20695,7 @@ 1 2 - 1470331 + 1474259 @@ -20431,17 +20711,17 @@ 1 2 - 1353836 + 1357452 2 30 - 110390 + 110685 30 4274 - 6105 + 6121 @@ -20580,22 +20860,22 @@ 1 2 - 1312097 + 1315602 2 3 - 377145 + 378152 3 4 - 122475 + 122802 4 135 - 130823 + 131172 @@ -20611,22 +20891,22 @@ 1 2 - 1313592 + 1317101 2 3 - 377145 + 378152 3 4 - 120980 + 121303 4 135 - 130823 + 131172 @@ -20642,22 +20922,22 @@ 1 2 - 1313966 + 1317476 2 3 - 378017 + 379027 3 4 - 122475 + 122802 4 6 - 128082 + 128424 @@ -20667,11 +20947,11 @@ pointerishsize - 2244308 + 2250303 id - 2244308 + 2250303 size @@ -20693,7 +20973,7 @@ 1 2 - 2244308 + 2250303 @@ -20709,7 +20989,7 @@ 1 2 - 2244308 + 2250303 @@ -20793,23 +21073,23 @@ arraysizes - 88337 + 88572 id - 88337 + 88572 num_elements - 18439 + 18489 bytesize - 22800 + 22861 alignment - 622 + 624 @@ -20823,7 +21103,7 @@ 1 2 - 88337 + 88572 @@ -20839,7 +21119,7 @@ 1 2 - 88337 + 88572 @@ -20855,7 +21135,7 @@ 1 2 - 88337 + 88572 @@ -20876,7 +21156,7 @@ 2 3 - 8846 + 8869 3 @@ -20886,22 +21166,22 @@ 4 5 - 5606 + 5621 6 7 - 1619 + 1624 8 27 - 1495 + 1499 34 57 - 373 + 374 @@ -20917,22 +21197,22 @@ 1 2 - 9469 + 9494 2 3 - 6603 + 6621 3 5 - 1245 + 1249 5 11 - 1121 + 1124 @@ -20948,22 +21228,22 @@ 1 2 - 9469 + 9494 2 3 - 6603 + 6621 3 4 - 996 + 999 4 6 - 1370 + 1374 @@ -20979,37 +21259,37 @@ 1 2 - 622 + 624 2 3 - 14702 + 14741 3 4 - 373 + 374 4 5 - 3239 + 3248 5 7 - 1495 + 1499 7 17 - 1744 + 1748 17 45 - 622 + 624 @@ -21025,22 +21305,22 @@ 1 2 - 16446 + 16490 2 3 - 3987 + 3997 3 5 - 1744 + 1748 5 7 - 622 + 624 @@ -21056,22 +21336,22 @@ 1 2 - 16570 + 16615 2 3 - 3987 + 3997 3 5 - 1868 + 1873 5 6 - 373 + 374 @@ -21184,15 +21464,15 @@ typedefbase - 2162643 + 1827993 id - 2162643 + 1827993 type_id - 900467 + 885785 @@ -21206,7 +21486,7 @@ 1 2 - 2162643 + 1827993 @@ -21222,22 +21502,22 @@ 1 2 - 726620 + 706685 2 3 - 81262 + 83828 3 - 6 - 69598 + 7 + 74588 - 6 - 2848 - 22985 + 7 + 4525 + 20682 @@ -21247,15 +21527,15 @@ decltypes - 812302 + 814471 id - 27490 + 27563 expr - 812302 + 814471 kind @@ -21263,7 +21543,7 @@ base_type - 3332 + 3341 parentheses_would_change_meaning @@ -21281,32 +21561,32 @@ 1 2 - 9711 + 9737 2 3 - 3639 + 3648 4 5 - 3617 + 3626 6 9 - 548 + 549 23 24 - 3244 + 3253 29 30 - 3134 + 3143 32 @@ -21316,12 +21596,12 @@ 171 172 - 3069 + 3077 173 224 - 394 + 395 @@ -21337,7 +21617,7 @@ 1 2 - 27490 + 27563 @@ -21353,7 +21633,7 @@ 1 2 - 27490 + 27563 @@ -21369,7 +21649,7 @@ 1 2 - 27490 + 27563 @@ -21385,7 +21665,7 @@ 1 2 - 812302 + 814471 @@ -21401,7 +21681,7 @@ 1 2 - 812302 + 814471 @@ -21417,7 +21697,7 @@ 1 2 - 812302 + 814471 @@ -21433,7 +21713,7 @@ 1 2 - 812302 + 814471 @@ -21513,17 +21793,17 @@ 1 2 - 1205 + 1208 2 3 - 1030 + 1033 3 4 - 350 + 351 4 @@ -21533,7 +21813,7 @@ 5 8 - 284 + 285 8 @@ -21559,27 +21839,27 @@ 1 2 - 1161 + 1164 2 3 - 854 + 857 3 4 - 328 + 329 4 7 - 284 + 285 7 201 - 306 + 307 340 @@ -21605,7 +21885,7 @@ 1 2 - 3332 + 3341 @@ -21621,7 +21901,7 @@ 1 2 - 3332 + 3341 @@ -21695,23 +21975,23 @@ type_operators - 8519 + 7960 id - 8519 + 7960 arg_type - 7690 + 7186 kind - 92 + 86 base_type - 5618 + 5249 @@ -21725,7 +22005,7 @@ 1 2 - 8519 + 7960 @@ -21741,7 +22021,7 @@ 1 2 - 8519 + 7960 @@ -21757,7 +22037,7 @@ 1 2 - 8519 + 7960 @@ -21773,12 +22053,12 @@ 1 2 - 6861 + 6411 2 3 - 828 + 774 @@ -21794,12 +22074,12 @@ 1 2 - 6861 + 6411 2 3 - 828 + 774 @@ -21815,12 +22095,12 @@ 1 2 - 7667 + 7164 2 3 - 23 + 21 @@ -21836,22 +22116,22 @@ 1 2 - 23 + 21 7 8 - 23 + 21 96 97 - 23 + 21 266 267 - 23 + 21 @@ -21867,22 +22147,22 @@ 1 2 - 23 + 21 7 8 - 23 + 21 96 97 - 23 + 21 266 267 - 23 + 21 @@ -21898,22 +22178,22 @@ 1 2 - 23 + 21 4 5 - 23 + 21 72 73 - 23 + 21 222 223 - 23 + 21 @@ -21929,22 +22209,22 @@ 1 2 - 3891 + 3636 2 3 - 967 + 903 3 4 - 368 + 344 4 6 - 391 + 365 @@ -21960,22 +22240,22 @@ 1 2 - 4052 + 3786 2 3 - 1059 + 989 3 4 - 483 + 451 4 5 - 23 + 21 @@ -21991,17 +22271,17 @@ 1 2 - 4374 + 4087 2 3 - 1220 + 1140 3 4 - 23 + 21 @@ -22011,19 +22291,19 @@ usertypes - 4863363 + 4459321 id - 4863363 + 4459321 name - 1051136 + 964062 kind - 158 + 145 @@ -22037,7 +22317,7 @@ 1 2 - 4863363 + 4459321 @@ -22053,7 +22333,7 @@ 1 2 - 4863363 + 4459321 @@ -22069,22 +22349,22 @@ 1 2 - 727655 + 667498 2 3 - 192440 + 176378 3 7 - 83738 + 76801 7 30282 - 47302 + 43383 @@ -22100,12 +22380,12 @@ 1 2 - 986532 + 904810 2 10 - 64603 + 59252 @@ -22121,62 +22401,62 @@ 28 29 - 13 + 12 64 65 - 13 + 12 579 580 - 13 + 12 1042 1043 - 13 + 12 - 1563 - 1564 - 13 + 1562 + 1563 + 12 1874 1875 - 13 + 12 4586 4587 - 13 + 12 - 19666 - 19667 - 13 + 19665 + 19666 + 12 - 20075 - 20076 - 13 + 20069 + 20070 + 12 82092 82093 - 13 + 12 - 86007 - 86008 - 13 + 85998 + 85999 + 12 - 151219 - 151220 - 13 + 151139 + 151140 + 12 @@ -22192,62 +22472,62 @@ 19 20 - 13 + 12 47 48 - 13 + 12 50 51 - 13 + 12 153 154 - 13 + 12 417 418 - 13 + 12 771 772 - 13 + 12 1565 1566 - 13 + 12 3066 3067 - 13 + 12 5585 5586 - 13 + 12 10838 10839 - 13 + 12 10903 10904 - 13 + 12 51707 51708 - 13 + 12 @@ -22257,19 +22537,19 @@ usertypesize - 1595582 + 1463274 id - 1595582 + 1463274 size - 1846 + 1693 alignment - 105 + 96 @@ -22283,7 +22563,7 @@ 1 2 - 1595582 + 1463274 @@ -22299,7 +22579,7 @@ 1 2 - 1595582 + 1463274 @@ -22315,52 +22595,52 @@ 1 2 - 580 + 532 2 3 - 250 + 229 3 4 - 105 + 96 4 6 - 118 + 108 6 8 - 145 + 133 8 14 - 145 + 133 14 26 - 145 + 133 26 86 - 145 + 133 96 - 1592 - 145 + 1588 + 133 1733 - 93158 - 65 + 93157 + 60 @@ -22376,17 +22656,17 @@ 1 2 - 1516 + 1390 2 3 - 210 + 193 3 6 - 118 + 108 @@ -22402,42 +22682,42 @@ 1 2 - 13 + 12 3 4 - 13 + 12 7 8 - 13 + 12 54 55 - 13 + 12 56 57 - 13 + 12 - 2046 - 2047 - 13 + 2045 + 2046 + 12 - 10484 - 10485 - 13 + 10475 + 10476 + 12 - 108344 - 108345 - 13 + 108343 + 108344 + 12 @@ -22453,37 +22733,37 @@ 1 2 - 26 + 24 3 4 - 13 + 12 11 12 - 13 + 12 12 13 - 13 + 12 17 18 - 13 + 12 27 28 - 13 + 12 110 111 - 13 + 12 @@ -22493,26 +22773,26 @@ usertype_final - 11462 + 11493 id - 11462 + 11493 usertype_uuid - 50280 + 50413 id - 50280 + 50413 uuid - 49771 + 49904 @@ -22526,7 +22806,7 @@ 1 2 - 50280 + 50413 @@ -22542,12 +22822,12 @@ 1 2 - 49263 + 49394 2 3 - 508 + 509 @@ -22557,15 +22837,15 @@ usertype_alias_kind - 2162686 + 1827993 id - 2162643 + 1827993 alias_kind - 85 + 24 @@ -22579,12 +22859,7 @@ 1 2 - 2162600 - - - 2 - 3 - 42 + 1827993 @@ -22598,14 +22873,14 @@ 12 - 21658 - 21659 - 42 + 36585 + 36586 + 12 - 28961 - 28962 - 42 + 114554 + 114555 + 12 @@ -22615,26 +22890,26 @@ nontype_template_parameters - 960966 + 766417 id - 960966 + 766417 type_template_type_constraint - 29057 + 27152 id - 14321 + 13382 constraint - 27836 + 26012 @@ -22648,27 +22923,27 @@ 1 2 - 10936 + 10219 2 3 - 967 + 903 3 5 - 1105 + 1032 5 14 - 1197 + 1118 14 17 - 115 + 107 @@ -22684,12 +22959,12 @@ 1 2 - 26616 + 24871 2 3 - 1220 + 1140 @@ -22699,15 +22974,15 @@ mangled_name - 7805181 + 7826029 id - 7805181 + 7826029 mangled_name - 6313668 + 6330532 is_complete @@ -22725,7 +23000,7 @@ 1 2 - 7805181 + 7826029 @@ -22741,7 +23016,7 @@ 1 2 - 7805181 + 7826029 @@ -22757,12 +23032,12 @@ 1 2 - 5984989 + 6000976 2 1127 - 328678 + 329556 @@ -22778,7 +23053,7 @@ 1 2 - 6313668 + 6330532 @@ -22830,59 +23105,59 @@ is_pod_class - 744607 + 593861 id - 744607 + 593861 is_standard_layout_class - 1314787 + 1205789 id - 1314787 + 1205789 is_complete - 1574126 + 1443608 id - 1574126 + 1443608 is_class_template - 284420 + 260848 id - 284420 + 260848 class_instantiation - 1297973 + 1190271 to - 1294176 + 1186788 from - 89303 + 81905 @@ -22896,12 +23171,12 @@ 1 2 - 1291512 + 1184345 2 8 - 2663 + 2443 @@ -22917,47 +23192,47 @@ 1 2 - 25952 + 23802 2 3 - 16154 + 14816 3 4 - 8835 + 8103 4 5 - 5841 + 5357 5 7 - 7529 + 6906 7 10 - 6830 + 6265 10 17 - 7226 + 6627 17 53 - 6765 + 6204 53 4219 - 4167 + 3821 @@ -22967,19 +23242,19 @@ class_template_argument - 3419922 + 3136346 type_id - 1594052 + 1461871 index - 1476 + 1354 arg_type - 1008977 + 925359 @@ -22993,27 +23268,27 @@ 1 2 - 663407 + 608427 2 3 - 479235 + 439439 3 4 - 302012 + 276994 4 7 - 120820 + 110800 7 113 - 28576 + 26209 @@ -23029,22 +23304,22 @@ 1 2 - 697654 + 639838 2 3 - 493648 + 452659 3 4 - 300047 + 275192 4 113 - 102701 + 94182 @@ -23060,37 +23335,37 @@ 2 3 - 13 + 12 4 5 - 936 + 858 5 30 - 118 + 108 33 90 - 118 + 108 95 453 - 118 + 108 643 - 6819 - 118 + 6818 + 108 - 11329 - 120877 - 52 + 11328 + 120866 + 48 @@ -23106,37 +23381,37 @@ 2 3 - 13 + 12 4 5 - 936 + 858 5 16 - 131 + 120 16 35 - 118 + 108 37 155 - 118 + 108 196 3251 - 118 + 108 10075 - 43772 - 39 + 43770 + 36 @@ -23152,27 +23427,27 @@ 1 2 - 633050 + 580609 2 3 - 206959 + 189791 3 4 - 60608 + 55575 4 11 - 76762 + 70403 11 - 11634 - 31596 + 11632 + 28979 @@ -23188,17 +23463,17 @@ 1 2 - 889448 + 815732 2 3 - 96886 + 88860 3 22 - 22642 + 20766 @@ -23208,19 +23483,19 @@ class_template_argument_value - 639675 + 510172 type_id - 258100 + 205847 index - 384 + 306 arg_value - 639504 + 510036 @@ -23234,17 +23509,17 @@ 1 2 - 195380 + 155825 2 3 - 54388 + 43377 3 8 - 8331 + 6644 @@ -23260,22 +23535,22 @@ 1 2 - 185511 + 147954 2 3 - 50757 + 40481 3 45 - 19482 + 15538 45 154 - 2349 + 1874 @@ -23291,47 +23566,47 @@ 2 3 - 42 + 34 20 21 - 42 + 34 49 50 - 42 + 34 84 85 - 42 + 34 105 106 - 42 + 34 278 279 - 42 + 34 981 982 - 42 + 34 2471 2472 - 42 + 34 3753 3754 - 42 + 34 @@ -23347,47 +23622,47 @@ 3 4 - 42 + 34 74 75 - 42 + 34 105 106 - 42 + 34 273 274 - 42 + 34 336 337 - 42 + 34 892 893 - 42 + 34 2433 2434 - 42 + 34 4801 4802 - 42 + 34 6051 6052 - 42 + 34 @@ -23403,12 +23678,12 @@ 1 2 - 639333 + 509900 2 3 - 170 + 136 @@ -23424,7 +23699,7 @@ 1 2 - 639504 + 510036 @@ -23434,15 +23709,15 @@ is_proxy_class_for - 60476 + 55466 id - 60476 + 55466 templ_param_id - 57140 + 52406 @@ -23456,7 +23731,7 @@ 1 2 - 60476 + 55466 @@ -23472,12 +23747,12 @@ 1 2 - 56243 + 51584 2 79 - 896 + 822 @@ -23487,19 +23762,19 @@ type_mentions - 5813149 + 5828677 id - 5813149 + 5828677 type_id - 275282 + 276017 location - 5767568 + 5782974 kind @@ -23517,7 +23792,7 @@ 1 2 - 5813149 + 5828677 @@ -23533,7 +23808,7 @@ 1 2 - 5813149 + 5828677 @@ -23549,7 +23824,7 @@ 1 2 - 5813149 + 5828677 @@ -23565,42 +23840,42 @@ 1 2 - 136147 + 136510 2 3 - 30912 + 30995 3 4 - 11137 + 11167 4 5 - 14668 + 14707 5 7 - 19938 + 19991 7 12 - 21785 + 21843 12 28 - 21025 + 21081 28 8907 - 19666 + 19719 @@ -23616,42 +23891,42 @@ 1 2 - 136147 + 136510 2 3 - 30912 + 30995 3 4 - 11137 + 11167 4 5 - 14668 + 14707 5 7 - 19938 + 19991 7 12 - 21785 + 21843 12 28 - 21025 + 21081 28 8907 - 19666 + 19719 @@ -23667,7 +23942,7 @@ 1 2 - 275282 + 276017 @@ -23683,12 +23958,12 @@ 1 2 - 5721986 + 5737270 2 3 - 45581 + 45703 @@ -23704,12 +23979,12 @@ 1 2 - 5721986 + 5737270 2 3 - 45581 + 45703 @@ -23725,7 +24000,7 @@ 1 2 - 5767568 + 5782974 @@ -23783,26 +24058,26 @@ is_function_template - 1382147 + 1335965 id - 1382147 + 1335965 function_instantiation - 1220177 + 973151 to - 1220177 + 973151 from - 228919 + 182574 @@ -23816,7 +24091,7 @@ 1 2 - 1220177 + 973151 @@ -23832,27 +24107,27 @@ 1 2 - 139240 + 111050 2 3 - 52978 + 42253 3 9 - 18029 + 14379 9 103 - 17175 + 13698 103 1532 - 1495 + 1192 @@ -23862,19 +24137,19 @@ function_template_argument - 3116090 + 2485235 function_id - 1822511 + 1453542 index - 598 + 477 arg_type - 373713 + 298055 @@ -23888,22 +24163,22 @@ 1 2 - 981943 + 783148 2 3 - 518123 + 413229 3 4 - 215461 + 171840 4 15 - 106982 + 85324 @@ -23919,22 +24194,22 @@ 1 2 - 1005955 + 802298 2 3 - 515731 + 411320 3 4 - 212726 + 169660 4 9 - 88098 + 70262 @@ -23950,52 +24225,52 @@ 1 2 - 213 + 170 7 8 - 42 + 34 45 46 - 42 + 34 77 78 - 42 + 34 138 139 - 42 + 34 280 281 - 42 + 34 2504 2505 - 42 + 34 7547 7548 - 42 + 34 19674 19675 - 42 + 34 42657 42658 - 42 + 34 @@ -24011,52 +24286,52 @@ 1 2 - 213 + 170 4 5 - 42 + 34 17 18 - 42 + 34 27 28 - 42 + 34 52 53 - 42 + 34 112 113 - 42 + 34 315 316 - 42 + 34 972 973 - 42 + 34 2754 2755 - 42 + 34 6081 6082 - 42 + 34 @@ -24072,37 +24347,37 @@ 1 2 - 219178 + 174805 2 3 - 33026 + 26340 3 4 - 25079 + 20002 4 6 - 28411 + 22659 6 11 - 29138 + 23239 11 76 - 29309 + 23375 79 2452 - 9570 + 7632 @@ -24118,17 +24393,17 @@ 1 2 - 322059 + 256858 2 3 - 40289 + 32132 3 15 - 11364 + 9063 @@ -24138,19 +24413,19 @@ function_template_argument_value - 567812 + 452858 function_id - 246778 + 196817 index - 598 + 477 arg_value - 564437 + 450166 @@ -24164,17 +24439,17 @@ 1 2 - 189868 + 151429 2 3 - 53790 + 42900 3 8 - 3118 + 2487 @@ -24190,22 +24465,22 @@ 1 2 - 181195 + 144512 2 3 - 46014 + 36698 3 54 - 18628 + 14856 54 113 - 939 + 749 @@ -24221,52 +24496,52 @@ 1 2 - 213 + 170 2 3 - 42 + 34 3 4 - 42 + 34 4 5 - 42 + 34 15 16 - 42 + 34 27 28 - 42 + 34 1345 1346 - 42 + 34 1388 1389 - 42 + 34 1850 1851 - 42 + 34 2547 2548 - 42 + 34 @@ -24282,52 +24557,52 @@ 1 2 - 213 + 170 2 3 - 42 + 34 3 4 - 42 + 34 4 5 - 42 + 34 51 52 - 42 + 34 63 64 - 42 + 34 1906 1907 - 42 + 34 3295 3296 - 42 + 34 3702 3703 - 42 + 34 4180 4181 - 42 + 34 @@ -24343,12 +24618,12 @@ 1 2 - 561062 + 447474 2 3 - 3375 + 2691 @@ -24364,7 +24639,7 @@ 1 2 - 564437 + 450166 @@ -24374,26 +24649,26 @@ is_variable_template - 58559 + 58715 id - 58559 + 58715 variable_instantiation - 420379 + 421502 to - 420379 + 421502 from - 35010 + 35104 @@ -24407,7 +24682,7 @@ 1 2 - 420379 + 421502 @@ -24423,47 +24698,47 @@ 1 2 - 15075 + 15116 2 3 - 3987 + 3997 3 4 - 2242 + 2248 4 6 - 2865 + 2873 6 8 - 2242 + 2248 8 11 - 2741 + 2748 11 30 - 2741 + 2748 30 105 - 2741 + 2748 180 546 - 373 + 374 @@ -24473,19 +24748,19 @@ variable_template_argument - 766875 + 768923 variable_id - 399697 + 400764 index - 1993 + 1998 arg_type - 256164 + 256849 @@ -24499,22 +24774,22 @@ 1 2 - 155493 + 155908 2 3 - 189631 + 190138 3 4 - 36381 + 36478 4 17 - 18190 + 18239 @@ -24530,22 +24805,22 @@ 1 2 - 170444 + 170899 2 3 - 179788 + 180269 3 4 - 33640 + 33730 4 17 - 15823 + 15865 @@ -24561,12 +24836,12 @@ 28 29 - 872 + 874 34 35 - 373 + 374 37 @@ -24612,12 +24887,12 @@ 1 2 - 872 + 874 2 3 - 373 + 374 5 @@ -24663,22 +24938,22 @@ 1 2 - 175552 + 176021 2 3 - 44604 + 44723 3 6 - 21679 + 21737 6 206 - 14328 + 14366 @@ -24694,17 +24969,17 @@ 1 2 - 227757 + 228365 2 3 - 24794 + 24860 3 7 - 3613 + 3622 @@ -24714,19 +24989,19 @@ variable_template_argument_value - 19935 + 19988 variable_id - 14826 + 14866 index - 498 + 499 arg_value - 19935 + 19988 @@ -24740,12 +25015,12 @@ 1 2 - 13331 + 13367 2 3 - 1495 + 1499 @@ -24761,17 +25036,17 @@ 1 2 - 10465 + 10493 2 3 - 3987 + 3997 4 5 - 373 + 374 @@ -24849,7 +25124,7 @@ 1 2 - 19935 + 19988 @@ -24865,7 +25140,7 @@ 1 2 - 19935 + 19988 @@ -24875,15 +25150,15 @@ template_template_instantiation - 7239 + 6640 to - 6791 + 6228 from - 4800 + 4402 @@ -24897,12 +25172,12 @@ 1 2 - 6646 + 6095 2 15 - 145 + 133 @@ -24918,17 +25193,17 @@ 1 2 - 3138 + 2878 2 3 - 1490 + 1366 3 20 - 171 + 157 @@ -24938,19 +25213,19 @@ template_template_argument - 12079 + 11078 type_id - 7635 + 7002 index - 131 + 120 arg_type - 11340 + 10401 @@ -24964,22 +25239,22 @@ 1 2 - 6263 + 5745 2 3 - 527 + 483 3 8 - 632 + 580 8 11 - 210 + 193 @@ -24995,22 +25270,22 @@ 1 2 - 6290 + 5769 2 4 - 698 + 641 4 10 - 580 + 532 10 11 - 65 + 60 @@ -25026,52 +25301,52 @@ 6 7 - 13 + 12 11 12 - 13 + 12 16 17 - 13 + 12 21 22 - 13 + 12 27 28 - 13 + 12 38 39 - 13 + 12 50 51 - 13 + 12 64 65 - 13 + 12 104 105 - 13 + 12 579 580 - 13 + 12 @@ -25087,52 +25362,52 @@ 6 7 - 13 + 12 11 12 - 13 + 12 16 17 - 13 + 12 21 22 - 13 + 12 27 28 - 13 + 12 38 39 - 13 + 12 50 51 - 13 + 12 64 65 - 13 + 12 99 100 - 13 + 12 538 539 - 13 + 12 @@ -25148,12 +25423,12 @@ 1 2 - 11301 + 10365 3 43 - 39 + 36 @@ -25169,12 +25444,12 @@ 1 2 - 11314 + 10377 2 11 - 26 + 24 @@ -25184,19 +25459,19 @@ template_template_argument_value - 778 + 713 type_id - 659 + 604 index - 26 + 24 arg_value - 778 + 713 @@ -25210,7 +25485,7 @@ 1 2 - 659 + 604 @@ -25226,17 +25501,17 @@ 1 2 - 567 + 520 2 3 - 65 + 60 3 4 - 26 + 24 @@ -25252,12 +25527,12 @@ 8 9 - 13 + 12 42 43 - 13 + 12 @@ -25273,12 +25548,12 @@ 17 18 - 13 + 12 42 43 - 13 + 12 @@ -25294,7 +25569,7 @@ 1 2 - 778 + 713 @@ -25310,7 +25585,7 @@ 1 2 - 778 + 713 @@ -25320,19 +25595,19 @@ concept_templates - 3868 + 3614 concept_id - 3868 + 3614 name - 3868 + 3614 location - 3868 + 3614 @@ -25346,7 +25621,7 @@ 1 2 - 3868 + 3614 @@ -25362,7 +25637,7 @@ 1 2 - 3868 + 3614 @@ -25378,7 +25653,7 @@ 1 2 - 3868 + 3614 @@ -25394,7 +25669,7 @@ 1 2 - 3868 + 3614 @@ -25410,7 +25685,7 @@ 1 2 - 3868 + 3614 @@ -25426,7 +25701,7 @@ 1 2 - 3868 + 3614 @@ -25436,15 +25711,15 @@ concept_instantiation - 96774 + 90429 to - 96774 + 90429 from - 3683 + 3442 @@ -25458,7 +25733,7 @@ 1 2 - 96774 + 90429 @@ -25474,77 +25749,77 @@ 1 2 - 253 + 236 2 3 - 115 + 107 3 4 - 391 + 365 4 5 - 138 + 129 5 6 - 322 + 301 6 8 - 253 + 236 8 10 - 115 + 107 10 12 - 299 + 279 12 15 - 230 + 215 15 19 - 230 + 215 19 25 - 276 + 258 25 37 - 276 + 258 38 49 - 276 + 258 50 72 - 276 + 258 78 387 - 230 + 215 @@ -25554,30 +25829,30 @@ is_type_constraint - 39487 + 36898 concept_id - 39487 + 36898 concept_template_argument - 120973 + 113041 concept_id - 81738 + 76379 index - 138 + 129 arg_type - 22932 + 21429 @@ -25591,17 +25866,17 @@ 1 2 - 49733 + 46473 2 3 - 26409 + 24678 3 7 - 5595 + 5228 @@ -25617,17 +25892,17 @@ 1 2 - 53602 + 50087 2 3 - 23945 + 22376 3 7 - 4190 + 3915 @@ -25643,32 +25918,32 @@ 11 12 - 23 + 21 26 27 - 23 + 21 34 35 - 23 + 21 243 244 - 23 + 21 1390 1391 - 23 + 21 3550 3551 - 23 + 21 @@ -25684,32 +25959,32 @@ 11 12 - 23 + 21 23 24 - 23 + 21 31 32 - 23 + 21 96 97 - 23 + 21 359 360 - 23 + 21 640 641 - 23 + 21 @@ -25725,42 +26000,42 @@ 1 2 - 11121 + 10391 2 3 - 3177 + 2969 3 4 - 1128 + 1054 4 5 - 1450 + 1355 5 6 - 1243 + 1161 6 9 - 1726 + 1613 9 14 - 2118 + 1979 14 259 - 967 + 903 @@ -25776,17 +26051,17 @@ 1 2 - 19294 + 18029 2 3 - 3499 + 3270 3 4 - 138 + 129 @@ -25796,19 +26071,19 @@ concept_template_argument_value - 115 + 106 concept_id - 90 + 83 index - 16 + 15 arg_value - 115 + 106 @@ -25822,7 +26097,7 @@ 1 2 - 90 + 83 @@ -25838,12 +26113,12 @@ 1 2 - 65 + 60 2 3 - 24 + 22 @@ -25859,12 +26134,12 @@ 3 4 - 8 + 7 8 9 - 8 + 7 @@ -25880,12 +26155,12 @@ 4 5 - 8 + 7 10 11 - 8 + 7 @@ -25901,7 +26176,7 @@ 1 2 - 115 + 106 @@ -25917,7 +26192,7 @@ 1 2 - 115 + 106 @@ -25927,15 +26202,15 @@ routinetypes - 757852 + 604424 id - 757852 + 604424 return_type - 355982 + 283913 @@ -25949,7 +26224,7 @@ 1 2 - 757852 + 604424 @@ -25965,17 +26240,17 @@ 1 2 - 293732 + 234266 2 3 - 44006 + 35097 3 4676 - 18243 + 14550 @@ -25985,19 +26260,19 @@ routinetypeargs - 1166052 + 1169167 routine - 412136 + 413236 index - 977 + 980 type_id - 111101 + 111398 @@ -26011,32 +26286,32 @@ 1 2 - 82144 + 82364 2 3 - 125498 + 125834 3 4 - 106864 + 107149 4 5 - 48624 + 48753 5 7 - 32488 + 32575 7 19 - 16515 + 16559 @@ -26052,27 +26327,27 @@ 1 2 - 88120 + 88356 2 3 - 138048 + 138417 3 4 - 113546 + 113849 4 5 - 40148 + 40256 5 10 - 32162 + 32248 10 @@ -26270,47 +26545,47 @@ 1 2 - 33194 + 33283 2 3 - 14994 + 15034 3 4 - 13201 + 13237 4 5 - 9833 + 9859 5 6 - 6356 + 6373 6 8 - 9507 + 9532 8 13 - 9453 + 9478 13 26 - 8746 + 8770 26 916 - 5813 + 5828 @@ -26326,22 +26601,22 @@ 1 2 - 78504 + 78714 2 3 - 17548 + 17594 3 5 - 9453 + 9478 5 17 - 5595 + 5610 @@ -26351,19 +26626,19 @@ ptrtomembers - 12026 + 11030 id - 12026 + 11030 type_id - 9890 + 9071 class_id - 5960 + 5466 @@ -26377,7 +26652,7 @@ 1 2 - 12026 + 11030 @@ -26393,7 +26668,7 @@ 1 2 - 12026 + 11030 @@ -26409,12 +26684,12 @@ 1 2 - 9613 + 8817 2 84 - 276 + 253 @@ -26430,12 +26705,12 @@ 1 2 - 9613 + 8817 2 84 - 276 + 253 @@ -26451,22 +26726,22 @@ 1 2 - 4747 + 4354 2 3 - 659 + 604 8 9 - 501 + 459 10 65 - 52 + 48 @@ -26482,22 +26757,22 @@ 1 2 - 4747 + 4354 2 3 - 659 + 604 8 9 - 501 + 459 10 65 - 52 + 48 @@ -26507,15 +26782,15 @@ specifiers - 7724 + 7745 id - 7724 + 7745 str - 7724 + 7745 @@ -26529,7 +26804,7 @@ 1 2 - 7724 + 7745 @@ -26545,7 +26820,7 @@ 1 2 - 7724 + 7745 @@ -26555,15 +26830,15 @@ typespecifiers - 969178 + 888530 type_id - 962756 + 882640 spec_id - 118 + 108 @@ -26577,12 +26852,12 @@ 1 2 - 956333 + 876750 2 3 - 6422 + 5890 @@ -26598,47 +26873,47 @@ 164 165 - 13 + 12 215 216 - 13 + 12 224 225 - 13 + 12 - 532 - 533 - 13 + 529 + 530 + 12 821 822 - 13 + 12 1568 1569 - 13 + 12 - 4150 - 4151 - 13 + 4147 + 4148 + 12 - 17496 - 17497 - 13 + 17494 + 17495 + 12 - 48324 - 48325 - 13 + 48302 + 48303 + 12 @@ -26648,15 +26923,15 @@ funspecifiers - 9674560 + 9688310 func_id - 3322023 + 3970168 spec_id - 811 + 2373 @@ -26670,32 +26945,27 @@ 1 2 - 435451 + 1483628 2 3 - 673556 + 506577 3 4 - 1416284 + 1038015 4 5 - 456941 + 696216 5 - 6 - 223835 - - - 6 8 - 115955 + 245730 @@ -26709,94 +26979,99 @@ 12 - 2 - 3 - 85 + 17 + 18 + 124 - 106 - 107 - 42 + 18 + 19 + 124 - 214 - 215 - 42 + 53 + 54 + 124 - 301 - 302 - 42 + 114 + 115 + 124 - 308 - 309 - 42 + 206 + 207 + 124 - 562 - 563 - 42 + 272 + 273 + 124 - 1589 - 1590 - 42 + 354 + 355 + 124 - 1631 - 1632 - 42 + 653 + 654 + 124 - 3749 - 3750 - 42 + 766 + 767 + 124 - 3881 - 3882 - 42 + 823 + 824 + 124 - 6569 - 6570 - 42 + 1075 + 1076 + 124 - 6803 - 6804 - 42 + 1258 + 1259 + 124 - 12221 - 12222 - 42 + 1662 + 1663 + 124 - 14693 - 14694 - 42 + 3340 + 3341 + 124 - 15715 - 15716 - 42 + 3351 + 3352 + 124 - 42406 - 42407 - 42 + 6166 + 6167 + 124 - 51943 - 51944 - 42 + 15136 + 15137 + 124 - 63744 - 63745 - 42 + 19863 + 19864 + 124 + + + 22425 + 22426 + 124 @@ -26806,15 +27081,15 @@ varspecifiers - 3064883 + 3073070 var_id - 2308848 + 2315015 spec_id - 1121 + 1124 @@ -26828,17 +27103,17 @@ 1 2 - 1655229 + 1659650 2 3 - 551701 + 553175 3 5 - 101917 + 102189 @@ -26904,15 +27179,15 @@ explicit_specifier_exprs - 41240 + 41350 func_id - 41240 + 41350 constant - 41240 + 41350 @@ -26926,7 +27201,7 @@ 1 2 - 41240 + 41350 @@ -26942,7 +27217,7 @@ 1 2 - 41240 + 41350 @@ -26952,19 +27227,19 @@ attributes - 649383 + 651117 id - 649383 + 651117 kind - 373 + 374 name - 2118 + 2123 name_space @@ -26972,7 +27247,7 @@ location - 643277 + 644996 @@ -26986,7 +27261,7 @@ 1 2 - 649383 + 651117 @@ -27002,7 +27277,7 @@ 1 2 - 649383 + 651117 @@ -27018,7 +27293,7 @@ 1 2 - 649383 + 651117 @@ -27034,7 +27309,7 @@ 1 2 - 649383 + 651117 @@ -27235,7 +27510,7 @@ 1 2 - 1868 + 1873 2 @@ -27256,7 +27531,7 @@ 1 2 - 2118 + 2123 @@ -27442,12 +27717,12 @@ 1 2 - 637422 + 639124 2 5 - 5855 + 5871 @@ -27463,7 +27738,7 @@ 1 2 - 643277 + 644996 @@ -27479,12 +27754,12 @@ 1 2 - 638169 + 639874 2 3 - 5108 + 5121 @@ -27500,7 +27775,7 @@ 1 2 - 643277 + 644996 @@ -27510,27 +27785,27 @@ attribute_args - 96187 + 90662 id - 96187 + 90662 kind - 52 + 48 attribute - 83066 + 78543 index - 65 + 60 location - 89501 + 84445 @@ -27544,7 +27819,7 @@ 1 2 - 96187 + 90662 @@ -27560,7 +27835,7 @@ 1 2 - 96187 + 90662 @@ -27576,7 +27851,7 @@ 1 2 - 96187 + 90662 @@ -27592,7 +27867,7 @@ 1 2 - 96187 + 90662 @@ -27608,22 +27883,22 @@ 10 11 - 13 + 12 133 134 - 13 + 12 560 561 - 13 + 12 - 6591 - 6592 - 13 + 6793 + 6794 + 12 @@ -27639,22 +27914,22 @@ 10 11 - 13 + 12 133 134 - 13 + 12 156 157 - 13 + 12 - 6170 - 6171 - 13 + 6365 + 6366 + 12 @@ -27670,17 +27945,17 @@ 1 2 - 26 + 24 4 5 - 13 + 12 5 6 - 13 + 12 @@ -27696,22 +27971,22 @@ 8 9 - 13 + 12 18 19 - 13 + 12 535 536 - 13 + 12 - 6242 - 6243 - 13 + 6437 + 6438 + 12 @@ -27727,17 +28002,17 @@ 1 2 - 75430 + 71455 2 - 4 - 6316 + 5 + 5902 - 4 + 5 18 - 1318 + 1185 @@ -27753,12 +28028,12 @@ 1 2 - 80824 + 76487 2 3 - 2241 + 2056 @@ -27774,12 +28049,12 @@ 1 2 - 76947 + 72931 2 6 - 6118 + 5611 @@ -27795,12 +28070,12 @@ 1 2 - 78516 + 74370 2 6 - 4549 + 4172 @@ -27816,27 +28091,27 @@ 94 95 - 13 + 12 96 97 - 13 + 12 166 167 - 13 + 12 464 465 - 13 + 12 - 6474 - 6475 - 13 + 6676 + 6677 + 12 @@ -27852,17 +28127,17 @@ 1 2 - 13 + 12 2 3 - 39 + 36 4 5 - 13 + 12 @@ -27878,27 +28153,27 @@ 94 95 - 13 + 12 96 97 - 13 + 12 166 167 - 13 + 12 464 465 - 13 + 12 - 6299 - 6300 - 13 + 6494 + 6495 + 12 @@ -27914,27 +28189,27 @@ 94 95 - 13 + 12 96 97 - 13 + 12 166 167 - 13 + 12 349 350 - 13 + 12 - 6123 - 6124 - 13 + 6318 + 6319 + 12 @@ -27950,12 +28225,12 @@ 1 2 - 87259 + 82304 2 23 - 2241 + 2140 @@ -27971,12 +28246,12 @@ 1 2 - 89290 + 84252 2 3 - 210 + 193 @@ -27992,12 +28267,12 @@ 1 2 - 89105 + 84082 2 18 - 395 + 362 @@ -28013,12 +28288,12 @@ 1 2 - 88960 + 83949 2 3 - 540 + 495 @@ -28028,15 +28303,15 @@ attribute_arg_value - 20935 + 16696 arg - 20935 + 16696 value - 640 + 511 @@ -28050,7 +28325,7 @@ 1 2 - 20935 + 16696 @@ -28066,52 +28341,52 @@ 1 2 - 256 + 204 5 6 - 42 + 34 6 7 - 42 + 34 15 16 - 42 + 34 25 26 - 42 + 34 51 52 - 42 + 34 52 53 - 42 + 34 71 72 - 42 + 34 76 77 - 42 + 34 183 184 - 42 + 34 @@ -28121,11 +28396,11 @@ attribute_arg_type - 461 + 460 arg - 461 + 460 type_id @@ -28143,7 +28418,7 @@ 1 2 - 461 + 460 @@ -28184,15 +28459,15 @@ attribute_arg_constant - 86916 + 82159 arg - 86916 + 82159 constant - 86916 + 82159 @@ -28206,7 +28481,7 @@ 1 2 - 86916 + 82159 @@ -28222,7 +28497,7 @@ 1 2 - 86916 + 82159 @@ -28232,15 +28507,15 @@ attribute_arg_expr - 1753 + 1608 arg - 1753 + 1608 expr - 1753 + 1608 @@ -28254,7 +28529,7 @@ 1 2 - 1753 + 1608 @@ -28270,7 +28545,7 @@ 1 2 - 1753 + 1608 @@ -28333,15 +28608,15 @@ typeattributes - 91950 + 92195 type_id - 90330 + 90571 spec_id - 29154 + 29232 @@ -28355,12 +28630,12 @@ 1 2 - 88710 + 88947 2 3 - 1619 + 1624 @@ -28376,17 +28651,17 @@ 1 2 - 24669 + 24735 2 7 - 2242 + 2248 7 58 - 2242 + 2248 @@ -28396,15 +28671,15 @@ funcattributes - 842628 + 844878 func_id - 797898 + 800030 spec_id - 615493 + 617137 @@ -28418,12 +28693,12 @@ 1 2 - 757655 + 759678 2 7 - 40243 + 40351 @@ -28439,12 +28714,12 @@ 1 2 - 569892 + 571414 2 213 - 45601 + 45723 @@ -28515,17 +28790,75 @@ + + namespaceattributes + 5997 + + + namespace_id + 136 + + + spec_id + 5997 + + + + + namespace_id + spec_id + + + 12 + + + 1 + 2 + 68 + + + 11 + 12 + 34 + + + 163 + 164 + 34 + + + + + + + spec_id + namespace_id + + + 12 + + + 1 + 2 + 5997 + + + + + + + stmtattributes - 2371 + 2216 stmt_id - 2371 + 2216 spec_id - 598 + 559 @@ -28539,7 +28872,7 @@ 1 2 - 2371 + 2216 @@ -28555,27 +28888,27 @@ 1 2 - 230 + 215 2 3 - 161 + 150 3 4 - 46 + 43 9 10 - 115 + 107 13 16 - 46 + 43 @@ -28585,15 +28918,15 @@ unspecifiedtype - 8145638 + 7468031 type_id - 8145638 + 7468031 unspecified_type_id - 4690387 + 4300698 @@ -28607,7 +28940,7 @@ 1 2 - 8145638 + 7468031 @@ -28623,17 +28956,17 @@ 1 2 - 3130938 + 2870853 2 3 - 1275568 + 1169674 3 6277 - 283880 + 260170 @@ -28643,19 +28976,19 @@ member - 4659651 + 4200783 parent - 559011 + 544555 index - 10681 + 29732 child - 4543098 + 4195536 @@ -28669,52 +29002,57 @@ 1 2 - 232892 + 129174 2 3 - 24524 + 83450 3 4 - 29266 + 32605 4 5 - 37555 + 44848 5 + 6 + 42475 + + + 6 7 - 47595 + 34979 7 - 11 - 43109 + 9 + 41725 - 11 - 14 - 41528 + 9 + 13 + 41600 - 14 - 19 - 45117 + 13 + 18 + 41100 - 19 - 53 - 42083 + 18 + 42 + 40851 - 53 - 251 - 15338 + 42 + 239 + 11743 @@ -28730,52 +29068,57 @@ 1 2 - 232764 + 128924 2 3 - 24652 + 83575 3 4 - 29309 + 32356 4 5 - 37640 + 44973 5 + 6 + 42599 + + + 6 7 - 47381 + 33980 7 - 11 - 43536 + 9 + 42225 - 11 - 14 - 41443 + 9 + 13 + 41725 - 14 - 19 - 44903 + 13 + 18 + 41225 - 19 - 53 - 42083 + 18 + 42 + 40975 - 53 - 255 - 15295 + 42 + 265 + 11992 @@ -28791,57 +29134,57 @@ 1 2 - 2819 + 6496 2 - 4 - 811 + 3 + 2623 - 4 - 22 - 811 + 3 + 8 + 1873 - 22 - 31 - 811 + 9 + 10 + 2873 - 31 - 53 - 854 + 10 + 20 + 2373 - 53 - 108 - 811 + 20 + 27 + 2248 - 110 - 218 - 811 + 27 + 36 + 2373 - 223 - 328 - 811 + 36 + 50 + 2248 - 328 - 581 - 811 + 54 + 141 + 2248 - 653 - 2518 - 811 + 150 + 467 + 2248 - 2899 - 12735 - 512 + 480 + 4314 + 2123 @@ -28857,62 +29200,57 @@ 1 2 - 1751 + 5496 2 3 - 1367 + 3622 3 - 8 - 811 - - - 8 - 31 - 854 + 9 + 1873 - 31 - 41 - 854 + 9 + 10 + 2873 - 41 - 97 - 811 + 10 + 20 + 2248 - 97 - 161 - 811 + 20 + 28 + 2373 - 164 - 314 - 854 + 28 + 37 + 2498 - 318 - 386 - 811 + 37 + 56 + 2373 - 435 - 1127 - 811 + 58 + 156 + 2248 - 1145 - 6168 - 811 + 163 + 528 + 2248 - 6496 - 12747 - 128 + 547 + 4334 + 1873 @@ -28928,7 +29266,7 @@ 1 2 - 4543098 + 4195536 @@ -28944,12 +29282,12 @@ 1 2 - 4455726 + 4190289 2 - 13 - 87372 + 3 + 5246 @@ -28959,15 +29297,15 @@ enclosingfunction - 143982 + 114833 child - 143982 + 114833 parent - 89465 + 71353 @@ -28981,7 +29319,7 @@ 1 2 - 143982 + 114833 @@ -28997,22 +29335,22 @@ 1 2 - 61865 + 49340 2 3 - 5810 + 4634 3 4 - 19268 + 15367 4 37 - 2520 + 2010 @@ -29022,27 +29360,27 @@ derivations - 598061 + 476983 derivation - 598061 + 476983 sub - 570803 + 455243 index - 299 + 238 super - 295399 + 235595 location - 44391 + 35404 @@ -29056,7 +29394,7 @@ 1 2 - 598061 + 476983 @@ -29072,7 +29410,7 @@ 1 2 - 598061 + 476983 @@ -29088,7 +29426,7 @@ 1 2 - 598061 + 476983 @@ -29104,7 +29442,7 @@ 1 2 - 598061 + 476983 @@ -29120,12 +29458,12 @@ 1 2 - 550081 + 438717 2 9 - 20721 + 16526 @@ -29141,12 +29479,12 @@ 1 2 - 550081 + 438717 2 8 - 20721 + 16526 @@ -29162,12 +29500,12 @@ 1 2 - 550081 + 438717 2 9 - 20721 + 16526 @@ -29183,12 +29521,12 @@ 1 2 - 550081 + 438717 2 8 - 20721 + 16526 @@ -29204,27 +29542,27 @@ 25 26 - 128 + 102 26 27 - 42 + 34 52 53 - 42 + 34 485 486 - 42 + 34 13360 13361 - 42 + 34 @@ -29240,22 +29578,22 @@ 25 26 - 170 + 136 52 53 - 42 + 34 485 486 - 42 + 34 13360 13361 - 42 + 34 @@ -29271,32 +29609,32 @@ 23 24 - 42 + 34 24 25 - 42 + 34 25 26 - 85 + 68 32 33 - 42 + 34 289 290 - 42 + 34 6510 6511 - 42 + 34 @@ -29312,22 +29650,22 @@ 1 2 - 170 + 136 7 8 - 42 + 34 65 66 - 42 + 34 963 964 - 42 + 34 @@ -29343,12 +29681,12 @@ 1 2 - 283094 + 225781 2 1655 - 12304 + 9813 @@ -29364,12 +29702,12 @@ 1 2 - 283094 + 225781 2 1655 - 12304 + 9813 @@ -29385,12 +29723,12 @@ 1 2 - 294843 + 235152 2 4 - 555 + 442 @@ -29406,12 +29744,12 @@ 1 2 - 288691 + 230245 2 81 - 6707 + 5349 @@ -29427,27 +29765,27 @@ 1 2 - 33239 + 26510 2 5 - 3930 + 3134 5 22 - 3460 + 2760 22 383 - 3375 + 2691 388 928 - 384 + 306 @@ -29463,27 +29801,27 @@ 1 2 - 33239 + 26510 2 5 - 3930 + 3134 5 22 - 3460 + 2760 22 383 - 3375 + 2691 388 928 - 384 + 306 @@ -29499,7 +29837,7 @@ 1 2 - 44391 + 35404 @@ -29515,22 +29853,22 @@ 1 2 - 36017 + 28725 2 4 - 3289 + 2623 4 26 - 3546 + 2828 26 928 - 1538 + 1226 @@ -29540,15 +29878,15 @@ derspecifiers - 600283 + 478755 der_id - 597506 + 476540 spec_id - 170 + 136 @@ -29562,12 +29900,12 @@ 1 2 - 594729 + 474325 2 3 - 2777 + 2214 @@ -29583,22 +29921,22 @@ 65 66 - 42 + 34 92 93 - 42 + 34 1104 1105 - 42 + 34 12789 12790 - 42 + 34 @@ -29608,15 +29946,15 @@ direct_base_offsets - 564309 + 450064 der_id - 564309 + 450064 offset - 640 + 511 @@ -29630,7 +29968,7 @@ 1 2 - 564309 + 450064 @@ -29646,42 +29984,42 @@ 1 2 - 128 + 102 2 3 - 170 + 136 3 4 - 128 + 102 4 5 - 42 + 34 7 8 - 42 + 34 9 10 - 42 + 34 110 111 - 42 + 34 13058 13059 - 42 + 34 @@ -29691,19 +30029,19 @@ virtual_base_offsets - 7305 + 5826 sub - 7305 + 5826 super - 128 + 102 offset - 427 + 340 @@ -29717,7 +30055,7 @@ 1 2 - 7305 + 5826 @@ -29733,7 +30071,7 @@ 1 2 - 7305 + 5826 @@ -29749,12 +30087,12 @@ 9 10 - 85 + 68 153 154 - 42 + 34 @@ -29770,12 +30108,12 @@ 1 2 - 42 + 34 9 10 - 85 + 68 @@ -29791,12 +30129,12 @@ 2 3 - 384 + 306 153 154 - 42 + 34 @@ -29812,12 +30150,12 @@ 1 2 - 42 + 34 2 3 - 384 + 306 @@ -29827,23 +30165,23 @@ frienddecls - 878379 + 700584 id - 878379 + 700584 type_id - 53192 + 42423 decl_id - 97626 + 77861 location - 7647 + 6099 @@ -29857,7 +30195,7 @@ 1 2 - 878379 + 700584 @@ -29873,7 +30211,7 @@ 1 2 - 878379 + 700584 @@ -29889,7 +30227,7 @@ 1 2 - 878379 + 700584 @@ -29905,47 +30243,47 @@ 1 2 - 7775 + 6167 2 3 - 17474 + 13970 3 7 - 4486 + 3577 7 12 - 4315 + 3441 12 20 - 4571 + 3646 20 32 - 4144 + 3305 33 50 - 4742 + 3782 50 80 - 4742 + 3782 101 120 - 939 + 749 @@ -29961,47 +30299,47 @@ 1 2 - 7775 + 6167 2 3 - 17474 + 13970 3 7 - 4486 + 3577 7 12 - 4315 + 3441 12 20 - 4571 + 3646 20 32 - 4144 + 3305 33 50 - 4742 + 3782 50 80 - 4742 + 3782 101 120 - 939 + 749 @@ -30017,12 +30355,12 @@ 1 2 - 51483 + 41060 2 13 - 1708 + 1363 @@ -30038,32 +30376,32 @@ 1 2 - 60327 + 48079 2 3 - 7434 + 5963 3 8 - 7519 + 5997 8 15 - 7605 + 6065 15 40 - 7605 + 6065 40 164 - 7135 + 5690 @@ -30079,32 +30417,32 @@ 1 2 - 60327 + 48079 2 3 - 7434 + 5963 3 8 - 7519 + 5997 8 15 - 7605 + 6065 15 40 - 7605 + 6065 40 164 - 7135 + 5690 @@ -30120,12 +30458,12 @@ 1 2 - 96771 + 77180 2 5 - 854 + 681 @@ -30141,12 +30479,12 @@ 1 2 - 7177 + 5724 2 - 20370 - 469 + 20371 + 374 @@ -30162,12 +30500,12 @@ 1 2 - 7476 + 5963 2 1148 - 170 + 136 @@ -30183,12 +30521,12 @@ 1 2 - 7220 + 5758 2 2132 - 427 + 340 @@ -30198,19 +30536,19 @@ comments - 11190894 + 11220785 id - 11190894 + 11220785 contents - 4279922 + 4291355 location - 11190894 + 11220785 @@ -30224,7 +30562,7 @@ 1 2 - 11190894 + 11220785 @@ -30240,7 +30578,7 @@ 1 2 - 11190894 + 11220785 @@ -30256,17 +30594,17 @@ 1 2 - 3906889 + 3917324 2 6 - 321078 + 321935 6 34359 - 51955 + 52094 @@ -30282,17 +30620,17 @@ 1 2 - 3906889 + 3917324 2 6 - 321078 + 321935 6 34359 - 51955 + 52094 @@ -30308,7 +30646,7 @@ 1 2 - 11190894 + 11220785 @@ -30324,7 +30662,7 @@ 1 2 - 11190894 + 11220785 @@ -30334,15 +30672,15 @@ commentbinding - 3828145 + 3838371 id - 3342603 + 3351531 element - 3662560 + 3672343 @@ -30356,12 +30694,12 @@ 1 2 - 3286536 + 3295314 2 1706 - 56067 + 56216 @@ -30377,12 +30715,12 @@ 1 2 - 3496975 + 3506316 2 3 - 165585 + 166027 @@ -30392,15 +30730,15 @@ exprconv - 9607946 + 9633039 converted - 9607841 + 9632934 conversion - 9607946 + 9633039 @@ -30414,7 +30752,7 @@ 1 2 - 9607736 + 9632828 2 @@ -30435,7 +30773,7 @@ 1 2 - 9607946 + 9633039 @@ -30445,30 +30783,30 @@ compgenerated - 10701538 + 9893080 id - 10701538 + 9893080 synthetic_destructor_call - 1788903 + 1671616 element - 1332248 + 1244902 i - 414 + 387 destructor_call - 1788903 + 1671616 @@ -30482,17 +30820,17 @@ 1 2 - 886784 + 828643 2 3 - 438188 + 409459 3 19 - 7275 + 6798 @@ -30508,17 +30846,17 @@ 1 2 - 886784 + 828643 2 3 - 438188 + 409459 3 19 - 7275 + 6798 @@ -30534,57 +30872,57 @@ 1 2 - 46 + 43 2 3 - 92 + 86 3 4 - 92 + 86 13 14 - 23 + 21 23 24 - 23 + 21 27 28 - 23 + 21 32 33 - 23 + 21 53 54 - 23 + 21 316 317 - 23 + 21 19347 19348 - 23 + 21 57861 57862 - 23 + 21 @@ -30600,57 +30938,57 @@ 1 2 - 46 + 43 2 3 - 92 + 86 3 4 - 92 + 86 13 14 - 23 + 21 23 24 - 23 + 21 27 28 - 23 + 21 32 33 - 23 + 21 53 54 - 23 + 21 316 317 - 23 + 21 19347 19348 - 23 + 21 57861 57862 - 23 + 21 @@ -30666,7 +31004,7 @@ 1 2 - 1788903 + 1671616 @@ -30682,7 +31020,7 @@ 1 2 - 1788903 + 1671616 @@ -30692,15 +31030,15 @@ namespaces - 10800 + 9905 id - 10800 + 9905 name - 5710 + 5237 @@ -30714,7 +31052,7 @@ 1 2 - 10800 + 9905 @@ -30730,17 +31068,17 @@ 1 2 - 4668 + 4281 2 3 - 659 + 604 3 149 - 382 + 350 @@ -30750,26 +31088,26 @@ namespace_inline - 498 + 499 id - 498 + 499 namespacembrs - 2036610 + 2042050 parentid - 3987 + 3997 memberid - 2036610 + 2042050 @@ -30783,7 +31121,7 @@ 1 2 - 498 + 499 2 @@ -30793,12 +31131,12 @@ 3 4 - 498 + 499 4 5 - 622 + 624 5 @@ -30859,7 +31197,7 @@ 1 2 - 2036610 + 2042050 @@ -30869,19 +31207,19 @@ exprparents - 19402291 + 19454117 expr_id - 19402291 + 19454117 child_index - 19981 + 20034 parent_id - 12905450 + 12939921 @@ -30895,7 +31233,7 @@ 1 2 - 19402291 + 19454117 @@ -30911,7 +31249,7 @@ 1 2 - 19402291 + 19454117 @@ -30927,42 +31265,42 @@ 1 2 - 3844 + 3855 2 3 - 1515 + 1519 3 4 - 364 + 365 4 5 - 8952 + 8976 5 8 - 1655 + 1660 8 11 - 1627 + 1632 11 53 - 1515 + 1519 56 354800 - 505 + 506 @@ -30978,42 +31316,42 @@ 1 2 - 3844 + 3855 2 3 - 1515 + 1519 3 4 - 364 + 365 4 5 - 8952 + 8976 5 8 - 1655 + 1660 8 11 - 1627 + 1632 11 53 - 1515 + 1519 56 354800 - 505 + 506 @@ -31029,17 +31367,17 @@ 1 2 - 7375020 + 7394719 2 3 - 5069114 + 5082654 3 712 - 461315 + 462548 @@ -31055,17 +31393,17 @@ 1 2 - 7375020 + 7394719 2 3 - 5069114 + 5082654 3 712 - 461315 + 462548 @@ -31075,22 +31413,22 @@ expr_isload - 6834844 + 6853100 expr_id - 6834844 + 6853100 conversionkinds - 6050435 + 6050434 expr_id - 6050435 + 6050434 kind @@ -31108,7 +31446,7 @@ 1 2 - 6050435 + 6050434 @@ -31152,8 +31490,8 @@ 1 - 5831536 - 5831537 + 5831535 + 5831536 1 @@ -31164,15 +31502,15 @@ iscall - 6209631 + 5802529 caller - 6209631 + 5802529 kind - 69 + 64 @@ -31186,7 +31524,7 @@ 1 2 - 6209631 + 5802529 @@ -31202,17 +31540,17 @@ 230 231 - 23 + 21 1408 1409 - 23 + 21 - 268053 - 268054 - 23 + 268054 + 268055 + 21 @@ -31222,15 +31560,15 @@ numtemplatearguments - 719400 + 625757 expr_id - 719400 + 625757 num - 384 + 374 @@ -31244,7 +31582,7 @@ 1 2 - 719400 + 625757 @@ -31258,44 +31596,19 @@ 12 - 1 - 2 - 85 - - - 3 - 4 - 42 - - - 5 - 6 - 42 - - - 32 - 33 - 42 - - - 107 - 108 - 42 - - - 362 - 363 - 42 + 7 + 8 + 124 - 754 - 755 - 42 + 1264 + 1265 + 124 - 15573 - 15574 - 42 + 3738 + 3739 + 124 @@ -31353,23 +31666,23 @@ namequalifiers - 3255226 + 3041824 id - 3255226 + 3041824 qualifiableelement - 3255226 + 3041824 qualifyingelement - 50816 + 47484 location - 591189 + 552429 @@ -31383,7 +31696,7 @@ 1 2 - 3255226 + 3041824 @@ -31399,7 +31712,7 @@ 1 2 - 3255226 + 3041824 @@ -31415,7 +31728,7 @@ 1 2 - 3255226 + 3041824 @@ -31431,7 +31744,7 @@ 1 2 - 3255226 + 3041824 @@ -31447,7 +31760,7 @@ 1 2 - 3255226 + 3041824 @@ -31463,7 +31776,7 @@ 1 2 - 3255226 + 3041824 @@ -31479,27 +31792,27 @@ 1 2 - 33754 + 31541 2 3 - 8749 + 8175 3 5 - 4397 + 4109 5 - 6810 - 3822 + 6811 + 3571 19018 41956 - 92 + 86 @@ -31515,27 +31828,27 @@ 1 2 - 33754 + 31541 2 3 - 8749 + 8175 3 5 - 4397 + 4109 5 - 6810 - 3822 + 6811 + 3571 19018 41956 - 92 + 86 @@ -31551,22 +31864,22 @@ 1 2 - 36816 + 34403 2 3 - 7874 + 7358 3 6 - 3822 + 3571 6 20057 - 2302 + 2151 @@ -31582,22 +31895,22 @@ 1 2 - 84708 + 79133 2 6 - 40754 + 38103 6 7 - 426975 + 398981 7 192 - 38751 + 36210 @@ -31613,22 +31926,22 @@ 1 2 - 84708 + 79133 2 6 - 40754 + 38103 6 7 - 426975 + 398981 7 192 - 38751 + 36210 @@ -31644,22 +31957,22 @@ 1 2 - 119361 + 111535 2 4 - 14229 + 13296 4 5 - 444428 + 415290 5 33 - 13170 + 12306 @@ -31669,15 +31982,15 @@ varbind - 8232599 + 8254589 expr - 8232599 + 8254589 var - 1047572 + 1050370 @@ -31691,7 +32004,7 @@ 1 2 - 8232599 + 8254589 @@ -31707,52 +32020,52 @@ 1 2 - 171078 + 171535 2 3 - 188197 + 188699 3 4 - 145259 + 145647 4 5 - 116325 + 116635 5 6 - 82929 + 83150 6 7 - 65641 + 65817 7 9 - 80599 + 80815 9 13 - 81357 + 81574 13 27 - 78915 + 79126 27 5137 - 37268 + 37368 @@ -31762,15 +32075,15 @@ funbind - 6220039 + 5812232 expr - 6217391 + 5809758 fun - 295295 + 275934 @@ -31784,12 +32097,12 @@ 1 2 - 6214743 + 5807284 2 3 - 2647 + 2474 @@ -31805,27 +32118,27 @@ 1 2 - 194169 + 181439 2 3 - 41560 + 38835 3 4 - 18396 + 17190 4 8 - 24337 + 22741 8 37798 - 16831 + 15727 @@ -31835,19 +32148,19 @@ expr_allocator - 56738 + 45251 expr - 56738 + 45251 func - 128 + 102 form - 42 + 34 @@ -31861,7 +32174,7 @@ 1 2 - 56738 + 45251 @@ -31877,7 +32190,7 @@ 1 2 - 56738 + 45251 @@ -31893,17 +32206,17 @@ 1 2 - 42 + 34 591 592 - 42 + 34 736 737 - 42 + 34 @@ -31919,7 +32232,7 @@ 1 2 - 128 + 102 @@ -31935,7 +32248,7 @@ 1328 1329 - 42 + 34 @@ -31951,7 +32264,7 @@ 3 4 - 42 + 34 @@ -31961,19 +32274,19 @@ expr_deallocator - 67505 + 53838 expr - 67505 + 53838 func - 128 + 102 form - 85 + 68 @@ -31987,7 +32300,7 @@ 1 2 - 67505 + 53838 @@ -32003,7 +32316,7 @@ 1 2 - 67505 + 53838 @@ -32019,17 +32332,17 @@ 1 2 - 42 + 34 723 724 - 42 + 34 856 857 - 42 + 34 @@ -32045,7 +32358,7 @@ 1 2 - 128 + 102 @@ -32061,12 +32374,12 @@ 723 724 - 42 + 34 857 858 - 42 + 34 @@ -32082,12 +32395,12 @@ 1 2 - 42 + 34 2 3 - 42 + 34 @@ -32097,26 +32410,26 @@ expr_cond_two_operand - 652 + 653 cond - 652 + 653 expr_cond_guard - 895536 + 897875 cond - 895536 + 897875 guard - 895536 + 897875 @@ -32130,7 +32443,7 @@ 1 2 - 895536 + 897875 @@ -32146,7 +32459,7 @@ 1 2 - 895536 + 897875 @@ -32156,15 +32469,15 @@ expr_cond_true - 895533 + 897871 cond - 895533 + 897871 true - 895533 + 897871 @@ -32178,7 +32491,7 @@ 1 2 - 895533 + 897871 @@ -32194,7 +32507,7 @@ 1 2 - 895533 + 897871 @@ -32204,15 +32517,15 @@ expr_cond_false - 895536 + 897875 cond - 895536 + 897875 false - 895536 + 897875 @@ -32226,7 +32539,7 @@ 1 2 - 895536 + 897875 @@ -32242,7 +32555,7 @@ 1 2 - 895536 + 897875 @@ -32252,15 +32565,15 @@ values - 13438640 + 13474536 id - 13438640 + 13474536 str - 114260 + 114565 @@ -32274,7 +32587,7 @@ 1 2 - 13438640 + 13474536 @@ -32290,27 +32603,27 @@ 1 2 - 78093 + 78302 2 3 - 15260 + 15301 3 6 - 8871 + 8895 6 52 - 8605 + 8628 52 674264 - 3428 + 3437 @@ -32320,15 +32633,15 @@ valuetext - 6647587 + 6647484 id - 6647587 + 6647484 text - 1095411 + 1095412 @@ -32342,7 +32655,7 @@ 1 2 - 6647587 + 6647484 @@ -32368,7 +32681,7 @@ 3 7 - 86536 + 86537 7 @@ -32383,15 +32696,15 @@ valuebind - 13546933 + 13583118 val - 13438640 + 13474536 expr - 13546933 + 13583118 @@ -32405,12 +32718,12 @@ 1 2 - 13348327 + 13383982 2 6 - 90313 + 90554 @@ -32426,7 +32739,7 @@ 1 2 - 13546933 + 13583118 @@ -32436,19 +32749,19 @@ fieldoffsets - 1489415 + 1493394 id - 1489415 + 1493394 byteoffset - 31293 + 31376 bitoffset - 434 + 435 @@ -32462,7 +32775,7 @@ 1 2 - 1489415 + 1493394 @@ -32478,7 +32791,7 @@ 1 2 - 1489415 + 1493394 @@ -32494,37 +32807,37 @@ 1 2 - 17656 + 17703 2 3 - 2444 + 2451 3 5 - 2662 + 2669 5 12 - 2607 + 2614 12 34 - 2390 + 2396 34 198 - 2390 + 2396 209 5931 - 1140 + 1143 @@ -32540,12 +32853,12 @@ 1 2 - 30315 + 30396 2 9 - 977 + 980 @@ -32612,7 +32925,7 @@ 12 13 - 162 + 163 13 @@ -32637,19 +32950,19 @@ bitfield - 30276 + 30357 id - 30276 + 30357 bits - 3488 + 3497 declared_bits - 3488 + 3497 @@ -32663,7 +32976,7 @@ 1 2 - 30276 + 30357 @@ -32679,7 +32992,7 @@ 1 2 - 30276 + 30357 @@ -32695,12 +33008,12 @@ 1 2 - 996 + 999 2 3 - 747 + 749 3 @@ -32710,7 +33023,7 @@ 4 5 - 498 + 499 5 @@ -32746,7 +33059,7 @@ 1 2 - 3488 + 3497 @@ -32762,12 +33075,12 @@ 1 2 - 996 + 999 2 3 - 747 + 749 3 @@ -32777,7 +33090,7 @@ 4 5 - 498 + 499 5 @@ -32813,7 +33126,7 @@ 1 2 - 3488 + 3497 @@ -32823,23 +33136,23 @@ initialisers - 2334426 + 2340619 init - 2334426 + 2340619 var - 988525 + 991147 expr - 2334426 + 2340619 location - 537813 + 539239 @@ -32853,7 +33166,7 @@ 1 2 - 2334426 + 2340619 @@ -32869,7 +33182,7 @@ 1 2 - 2334426 + 2340619 @@ -32885,7 +33198,7 @@ 1 2 - 2334426 + 2340619 @@ -32901,17 +33214,17 @@ 1 2 - 871776 + 874088 2 15 - 39395 + 39500 16 25 - 77353 + 77558 @@ -32927,17 +33240,17 @@ 1 2 - 871776 + 874088 2 15 - 39395 + 39500 16 25 - 77353 + 77558 @@ -32953,7 +33266,7 @@ 1 2 - 988516 + 991138 2 @@ -32974,7 +33287,7 @@ 1 2 - 2334426 + 2340619 @@ -32990,7 +33303,7 @@ 1 2 - 2334426 + 2340619 @@ -33006,7 +33319,7 @@ 1 2 - 2334426 + 2340619 @@ -33022,22 +33335,22 @@ 1 2 - 438122 + 439284 2 3 - 32980 + 33067 3 15 - 42099 + 42211 15 111796 - 24610 + 24675 @@ -33053,17 +33366,17 @@ 1 2 - 469174 + 470418 2 4 - 49479 + 49610 4 12163 - 19159 + 19210 @@ -33079,22 +33392,22 @@ 1 2 - 438122 + 439284 2 3 - 32980 + 33067 3 15 - 42099 + 42211 15 111796 - 24610 + 24675 @@ -33104,26 +33417,26 @@ braced_initialisers - 74076 + 68480 init - 74076 + 68480 expr_ancestor - 1795304 + 1677598 exp - 1795304 + 1677598 ancestor - 898527 + 839616 @@ -33137,7 +33450,7 @@ 1 2 - 1795304 + 1677598 @@ -33153,17 +33466,17 @@ 1 2 - 18281 + 17083 2 3 - 869469 + 812464 3 19 - 10775 + 10069 @@ -33173,19 +33486,19 @@ exprs - 25143286 + 25210446 id - 25143286 + 25210446 kind - 1446 + 1450 location - 10554424 + 10582616 @@ -33199,7 +33512,7 @@ 1 2 - 25143286 + 25210446 @@ -33215,7 +33528,7 @@ 1 2 - 25143286 + 25210446 @@ -33393,22 +33706,22 @@ 1 2 - 8876944 + 8900655 2 3 - 818418 + 820604 3 16 - 795071 + 797195 16 71733 - 63990 + 64161 @@ -33424,17 +33737,17 @@ 1 2 - 9015974 + 9040056 2 3 - 772206 + 774269 3 32 - 766243 + 768290 @@ -33444,19 +33757,19 @@ expr_reuse - 906424 + 846996 reuse - 906424 + 846996 original - 906424 + 846996 value_category - 46 + 43 @@ -33470,7 +33783,7 @@ 1 2 - 906424 + 846996 @@ -33486,7 +33799,7 @@ 1 2 - 906424 + 846996 @@ -33502,7 +33815,7 @@ 1 2 - 906424 + 846996 @@ -33518,7 +33831,7 @@ 1 2 - 906424 + 846996 @@ -33534,12 +33847,12 @@ 58 59 - 23 + 21 39309 39310 - 23 + 21 @@ -33555,12 +33868,12 @@ 58 59 - 23 + 21 39309 39310 - 23 + 21 @@ -33570,15 +33883,15 @@ expr_types - 25143286 + 25210446 id - 25143286 + 25210446 typeid - 213631 + 214201 value_category @@ -33596,7 +33909,7 @@ 1 2 - 25143286 + 25210446 @@ -33612,7 +33925,7 @@ 1 2 - 25143286 + 25210446 @@ -33628,52 +33941,52 @@ 1 2 - 52371 + 52511 2 3 - 35097 + 35191 3 4 - 14468 + 14507 4 5 - 14490 + 14529 5 8 - 17515 + 17562 8 14 - 17340 + 17386 14 24 - 16397 + 16441 24 49 - 16025 + 16067 49 134 - 16134 + 16177 134 441505 - 13789 + 13825 @@ -33689,12 +34002,12 @@ 1 2 - 185417 + 185912 2 3 - 28213 + 28289 @@ -33746,26 +34059,26 @@ compound_requirement_is_noexcept - 69 + 64 expr - 69 + 64 new_allocated_type - 57934 + 46205 expr - 57934 + 46205 type_id - 34350 + 27396 @@ -33779,7 +34092,7 @@ 1 2 - 57934 + 46205 @@ -33795,17 +34108,17 @@ 1 2 - 14440 + 11517 2 3 - 18158 + 14481 3 19 - 1751 + 1397 @@ -33815,15 +34128,15 @@ new_array_allocated_type - 6914 + 6933 expr - 6914 + 6933 type_id - 2970 + 2978 @@ -33837,7 +34150,7 @@ 1 2 - 6914 + 6933 @@ -33858,12 +34171,12 @@ 2 3 - 2626 + 2633 3 5 - 223 + 224 6 @@ -35214,15 +35527,15 @@ condition_decl_bind - 437589 + 408900 expr - 437589 + 408900 decl - 437589 + 408900 @@ -35236,7 +35549,7 @@ 1 2 - 437589 + 408900 @@ -35252,7 +35565,7 @@ 1 2 - 437589 + 408900 @@ -35262,15 +35575,15 @@ typeid_bind - 60071 + 47909 expr - 60071 + 47909 type_id - 19995 + 15947 @@ -35284,7 +35597,7 @@ 1 2 - 60071 + 47909 @@ -35300,17 +35613,17 @@ 1 2 - 3717 + 2964 2 3 - 15765 + 12573 3 328 - 512 + 408 @@ -35320,15 +35633,15 @@ uuidof_bind - 27985 + 28060 expr - 27985 + 28060 type_id - 27719 + 27792 @@ -35342,7 +35655,7 @@ 1 2 - 27985 + 28060 @@ -35358,12 +35671,12 @@ 1 2 - 27495 + 27568 2 4 - 223 + 224 @@ -35373,15 +35686,15 @@ sizeof_bind - 241381 + 242025 expr - 241381 + 242025 type_id - 11180 + 11210 @@ -35395,7 +35708,7 @@ 1 2 - 241381 + 242025 @@ -35411,37 +35724,37 @@ 1 2 - 3867 + 3877 2 3 - 2776 + 2783 3 4 - 1021 + 1024 4 5 - 1137 + 1140 5 6 - 294 + 295 6 7 - 1062 + 1064 7 40 - 854 + 856 40 @@ -35504,23 +35817,23 @@ lambdas - 17730 + 16482 expr - 17730 + 16482 default_capture - 128 + 25 has_explicit_return_type - 85 + 17 has_explicit_parameter_list - 85 + 17 @@ -35534,7 +35847,7 @@ 1 2 - 17730 + 16482 @@ -35550,7 +35863,7 @@ 1 2 - 17730 + 16482 @@ -35566,7 +35879,7 @@ 1 2 - 17730 + 16482 @@ -35580,19 +35893,19 @@ 12 - 37 - 38 - 42 + 276 + 277 + 8 - 82 - 83 - 42 + 697 + 698 + 8 - 296 - 297 - 42 + 936 + 937 + 8 @@ -35605,15 +35918,10 @@ 12 - - 1 - 2 - 42 - 2 3 - 85 + 25 @@ -35626,15 +35934,10 @@ 12 - - 1 - 2 - 42 - 2 3 - 85 + 25 @@ -35648,14 +35951,14 @@ 12 - 55 - 56 - 42 + 813 + 814 + 8 - 360 - 361 - 42 + 1096 + 1097 + 8 @@ -35668,15 +35971,10 @@ 12 - - 2 - 3 - 42 - 3 4 - 42 + 17 @@ -35692,12 +35990,12 @@ 1 2 - 42 + 8 2 3 - 42 + 8 @@ -35711,14 +36009,14 @@ 12 - 45 - 46 - 42 + 34 + 35 + 8 - 370 - 371 - 42 + 1875 + 1876 + 8 @@ -35731,15 +36029,10 @@ 12 - - 2 - 3 - 42 - 3 4 - 42 + 17 @@ -35755,12 +36048,12 @@ 1 2 - 42 + 8 2 3 - 42 + 8 @@ -35770,15 +36063,15 @@ lambda_capture - 28450 + 28526 id - 28450 + 28526 lambda - 13261 + 13296 index @@ -35786,7 +36079,7 @@ field - 28450 + 28526 captured_by_reference @@ -35798,7 +36091,7 @@ location - 18350 + 18398 @@ -35812,7 +36105,7 @@ 1 2 - 28450 + 28526 @@ -35828,7 +36121,7 @@ 1 2 - 28450 + 28526 @@ -35844,7 +36137,7 @@ 1 2 - 28450 + 28526 @@ -35860,7 +36153,7 @@ 1 2 - 28450 + 28526 @@ -35876,7 +36169,7 @@ 1 2 - 28450 + 28526 @@ -35892,7 +36185,7 @@ 1 2 - 28450 + 28526 @@ -35908,27 +36201,27 @@ 1 2 - 6656 + 6674 2 3 - 3074 + 3082 3 4 - 1610 + 1614 4 6 - 1222 + 1226 6 18 - 697 + 699 @@ -35944,27 +36237,27 @@ 1 2 - 6656 + 6674 2 3 - 3074 + 3082 3 4 - 1610 + 1614 4 6 - 1222 + 1226 6 18 - 697 + 699 @@ -35980,27 +36273,27 @@ 1 2 - 6656 + 6674 2 3 - 3074 + 3082 3 4 - 1610 + 1614 4 6 - 1222 + 1226 6 18 - 697 + 699 @@ -36016,12 +36309,12 @@ 1 2 - 12692 + 12726 2 3 - 568 + 569 @@ -36037,7 +36330,7 @@ 1 2 - 13235 + 13270 2 @@ -36058,27 +36351,27 @@ 1 2 - 7284 + 7304 2 3 - 3237 + 3246 3 4 - 1326 + 1329 4 7 - 1084 + 1087 7 18 - 327 + 328 @@ -36387,7 +36680,7 @@ 2 3 - 111 + 112 @@ -36520,7 +36813,7 @@ 1 2 - 28450 + 28526 @@ -36536,7 +36829,7 @@ 1 2 - 28450 + 28526 @@ -36552,7 +36845,7 @@ 1 2 - 28450 + 28526 @@ -36568,7 +36861,7 @@ 1 2 - 28450 + 28526 @@ -36584,7 +36877,7 @@ 1 2 - 28450 + 28526 @@ -36600,7 +36893,7 @@ 1 2 - 28450 + 28526 @@ -36858,17 +37151,17 @@ 1 2 - 16524 + 16568 2 6 - 1394 + 1398 6 68 - 430 + 431 @@ -36884,12 +37177,12 @@ 1 2 - 17136 + 17181 2 68 - 1214 + 1217 @@ -36905,12 +37198,12 @@ 1 2 - 17618 + 17664 2 8 - 731 + 733 @@ -36926,17 +37219,17 @@ 1 2 - 16524 + 16568 2 6 - 1394 + 1398 6 68 - 430 + 431 @@ -36952,7 +37245,7 @@ 1 2 - 18324 + 18372 2 @@ -36973,7 +37266,7 @@ 1 2 - 18350 + 18398 @@ -36983,19 +37276,19 @@ fold - 1367 + 1247 expr - 1367 + 1247 operator - 85 + 86 is_left_fold - 42 + 21 @@ -37009,7 +37302,7 @@ 1 2 - 1367 + 1247 @@ -37025,7 +37318,7 @@ 1 2 - 1367 + 1247 @@ -37038,15 +37331,20 @@ 12 + + 1 + 2 + 43 + 2 3 - 42 + 21 - 30 - 31 - 42 + 54 + 55 + 21 @@ -37062,7 +37360,7 @@ 1 2 - 85 + 86 @@ -37076,9 +37374,9 @@ 12 - 32 - 33 - 42 + 58 + 59 + 21 @@ -37092,9 +37390,9 @@ 12 - 2 - 3 - 42 + 4 + 5 + 21 @@ -37104,11 +37402,11 @@ stmts - 6243069 + 6259629 id - 6243069 + 6259629 kind @@ -37116,7 +37414,7 @@ location - 2747715 + 2755003 @@ -37130,7 +37428,7 @@ 1 2 - 6243069 + 6259629 @@ -37146,7 +37444,7 @@ 1 2 - 6243069 + 6259629 @@ -37384,17 +37682,17 @@ 1 2 - 2346947 + 2353172 2 4 - 238475 + 239107 4 1581 - 162292 + 162723 @@ -37410,12 +37708,12 @@ 1 2 - 2661225 + 2668284 2 10 - 86489 + 86719 @@ -37532,15 +37830,15 @@ if_initialization - 373 + 374 if_stmt - 373 + 374 init_id - 373 + 374 @@ -37554,7 +37852,7 @@ 1 2 - 373 + 374 @@ -37570,7 +37868,7 @@ 1 2 - 373 + 374 @@ -37580,15 +37878,15 @@ if_then - 987571 + 990209 if_stmt - 987571 + 990209 then_id - 987571 + 990209 @@ -37602,7 +37900,7 @@ 1 2 - 987571 + 990209 @@ -37618,7 +37916,7 @@ 1 2 - 987571 + 990209 @@ -37628,15 +37926,15 @@ if_else - 467752 + 437085 if_stmt - 467752 + 437085 else_id - 467752 + 437085 @@ -37650,7 +37948,7 @@ 1 2 - 467752 + 437085 @@ -37666,7 +37964,7 @@ 1 2 - 467752 + 437085 @@ -37724,15 +38022,15 @@ constexpr_if_then - 103537 + 103814 constexpr_if_stmt - 103537 + 103814 then_id - 103537 + 103814 @@ -37746,7 +38044,7 @@ 1 2 - 103537 + 103814 @@ -37762,7 +38060,7 @@ 1 2 - 103537 + 103814 @@ -37772,15 +38070,15 @@ constexpr_if_else - 73759 + 73956 constexpr_if_stmt - 73759 + 73956 else_id - 73759 + 73956 @@ -37794,7 +38092,7 @@ 1 2 - 73759 + 73956 @@ -37810,7 +38108,7 @@ 1 2 - 73759 + 73956 @@ -37916,15 +38214,15 @@ while_body - 39542 + 39647 while_stmt - 39542 + 39647 body_id - 39542 + 39647 @@ -37938,7 +38236,7 @@ 1 2 - 39542 + 39647 @@ -37954,7 +38252,7 @@ 1 2 - 39542 + 39647 @@ -37964,15 +38262,15 @@ do_body - 233017 + 233640 do_stmt - 233017 + 233640 body_id - 233017 + 233640 @@ -37986,7 +38284,7 @@ 1 2 - 233017 + 233640 @@ -38002,7 +38300,7 @@ 1 2 - 233017 + 233640 @@ -38060,19 +38358,19 @@ switch_case - 894774 + 836109 switch_stmt - 440744 + 411847 index - 414 + 387 case_id - 894774 + 836109 @@ -38086,17 +38384,17 @@ 1 2 - 23 + 21 2 3 - 437658 + 408964 3 19 - 3062 + 2861 @@ -38112,17 +38410,17 @@ 1 2 - 23 + 21 2 3 - 437658 + 408964 3 19 - 3062 + 2861 @@ -38138,62 +38436,62 @@ 5 6 - 161 + 150 10 11 - 23 + 21 19 20 - 23 + 21 27 28 - 23 + 21 48 49 - 23 + 21 51 52 - 23 + 21 58 59 - 23 + 21 83 84 - 23 + 21 114 115 - 23 + 21 133 134 - 23 + 21 19141 19142 - 23 + 21 19142 19143 - 23 + 21 @@ -38209,62 +38507,62 @@ 5 6 - 161 + 150 10 11 - 23 + 21 19 20 - 23 + 21 27 28 - 23 + 21 48 49 - 23 + 21 51 52 - 23 + 21 58 59 - 23 + 21 83 84 - 23 + 21 114 115 - 23 + 21 133 134 - 23 + 21 19141 19142 - 23 + 21 19142 19143 - 23 + 21 @@ -38280,7 +38578,7 @@ 1 2 - 894774 + 836109 @@ -38296,7 +38594,7 @@ 1 2 - 894774 + 836109 @@ -38306,15 +38604,15 @@ switch_body - 440744 + 411847 switch_stmt - 440744 + 411847 body_id - 440744 + 411847 @@ -38328,7 +38626,7 @@ 1 2 - 440744 + 411847 @@ -38344,7 +38642,7 @@ 1 2 - 440744 + 411847 @@ -38354,15 +38652,15 @@ for_initialization - 73050 + 73245 for_stmt - 73050 + 73245 init_id - 73050 + 73245 @@ -38376,7 +38674,7 @@ 1 2 - 73050 + 73245 @@ -38392,7 +38690,7 @@ 1 2 - 73050 + 73245 @@ -38402,15 +38700,15 @@ for_condition - 76137 + 76340 for_stmt - 76137 + 76340 condition_id - 76137 + 76340 @@ -38424,7 +38722,7 @@ 1 2 - 76137 + 76340 @@ -38440,7 +38738,7 @@ 1 2 - 76137 + 76340 @@ -38450,15 +38748,15 @@ for_update - 73190 + 73386 for_stmt - 73190 + 73386 update_id - 73190 + 73386 @@ -38472,7 +38770,7 @@ 1 2 - 73190 + 73386 @@ -38488,7 +38786,7 @@ 1 2 - 73190 + 73386 @@ -38498,15 +38796,15 @@ for_body - 84163 + 84388 for_stmt - 84163 + 84388 body_id - 84163 + 84388 @@ -38520,7 +38818,7 @@ 1 2 - 84163 + 84388 @@ -38536,7 +38834,7 @@ 1 2 - 84163 + 84388 @@ -38546,19 +38844,19 @@ stmtparents - 5509819 + 5524434 id - 5509819 + 5524434 index - 16722 + 16767 parent - 2336424 + 2342622 @@ -38572,7 +38870,7 @@ 1 2 - 5509819 + 5524434 @@ -38588,7 +38886,7 @@ 1 2 - 5509819 + 5524434 @@ -38604,52 +38902,52 @@ 1 2 - 5493 + 5508 2 3 - 1369 + 1372 3 4 - 301 + 302 4 5 - 2126 + 2132 7 8 - 1394 + 1398 8 12 - 1084 + 1087 12 29 - 1472 + 1476 29 38 - 1257 + 1260 41 77 - 1265 + 1269 77 195079 - 955 + 958 @@ -38665,52 +38963,52 @@ 1 2 - 5493 + 5508 2 3 - 1369 + 1372 3 4 - 301 + 302 4 5 - 2126 + 2132 7 8 - 1394 + 1398 8 12 - 1084 + 1087 12 29 - 1472 + 1476 29 38 - 1257 + 1260 41 77 - 1265 + 1269 77 195079 - 955 + 958 @@ -38726,32 +39024,32 @@ 1 2 - 1341036 + 1344593 2 3 - 506485 + 507829 3 4 - 143753 + 144134 4 6 - 151038 + 151438 6 16 - 175330 + 175795 16 1943 - 18780 + 18830 @@ -38767,32 +39065,32 @@ 1 2 - 1341036 + 1344593 2 3 - 506485 + 507829 3 4 - 143753 + 144134 4 6 - 151038 + 151438 6 16 - 175330 + 175795 16 1943 - 18780 + 18830 @@ -38802,22 +39100,22 @@ ishandler - 47330 + 43754 block - 47330 + 43754 stmt_decl_bind - 723033 + 721438 stmt - 682991 + 681485 num @@ -38825,7 +39123,7 @@ decl - 722964 + 721370 @@ -38839,12 +39137,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -38860,12 +39158,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -39003,7 +39301,7 @@ 1 2 - 722940 + 721346 2 @@ -39024,7 +39322,7 @@ 1 2 - 722964 + 721370 @@ -39034,11 +39332,11 @@ stmt_decl_entry_bind - 723033 + 721438 stmt - 682991 + 681485 num @@ -39046,7 +39344,7 @@ decl_entry - 723033 + 721438 @@ -39060,12 +39358,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -39081,12 +39379,12 @@ 1 2 - 660998 + 659540 2 32 - 21993 + 21944 @@ -39224,7 +39522,7 @@ 1 2 - 723033 + 721438 @@ -39240,7 +39538,7 @@ 1 2 - 723033 + 721438 @@ -39250,15 +39548,15 @@ blockscope - 1757769 + 1762465 block - 1757769 + 1762465 enclosing - 1503349 + 1507364 @@ -39272,7 +39570,7 @@ 1 2 - 1757769 + 1762465 @@ -39288,17 +39586,17 @@ 1 2 - 1332655 + 1336215 2 3 - 128207 + 128549 3 28 - 42486 + 42599 @@ -39308,19 +39606,19 @@ jumpinfo - 347391 + 348319 id - 347391 + 348319 str - 28871 + 28948 target - 72512 + 72705 @@ -39334,7 +39632,7 @@ 1 2 - 347391 + 348319 @@ -39350,7 +39648,7 @@ 1 2 - 347391 + 348319 @@ -39366,37 +39664,37 @@ 2 3 - 13560 + 13596 3 4 - 6042 + 6058 4 5 - 2008 + 2014 5 6 - 1883 + 1888 6 10 - 2192 + 2197 10 25 - 2183 + 2189 25 13711 - 1000 + 1002 @@ -39412,17 +39710,17 @@ 1 2 - 23128 + 23190 2 3 - 3617 + 3626 3 3321 - 2125 + 2131 @@ -39443,27 +39741,27 @@ 2 3 - 36114 + 36210 3 4 - 17586 + 17633 4 5 - 7359 + 7379 5 8 - 6401 + 6418 8 2124 - 5017 + 5030 @@ -39479,7 +39777,7 @@ 1 2 - 72512 + 72705 @@ -39489,19 +39787,19 @@ preprocdirects - 5386939 + 5401328 id - 5386939 + 5401328 kind - 1370 + 1374 location - 5383699 + 5398080 @@ -39515,7 +39813,7 @@ 1 2 - 5386939 + 5401328 @@ -39531,7 +39829,7 @@ 1 2 - 5386939 + 5401328 @@ -39679,7 +39977,7 @@ 1 2 - 5383575 + 5397955 27 @@ -39700,7 +39998,7 @@ 1 2 - 5383699 + 5398080 @@ -39710,15 +40008,15 @@ preprocpair - 1136918 + 1139955 begin - 883245 + 885604 elseelifend - 1136918 + 1139955 @@ -39732,17 +40030,17 @@ 1 2 - 643153 + 644871 2 3 - 230498 + 231114 3 9 - 9593 + 9619 @@ -39758,7 +40056,7 @@ 1 2 - 1136918 + 1139955 @@ -39768,41 +40066,41 @@ preproctrue - 436078 + 437243 branch - 436078 + 437243 preprocfalse - 283575 + 284333 branch - 283575 + 284333 preproctext - 4335865 + 4347447 id - 4335865 + 4347447 head - 2943529 + 2951391 body - 1674914 + 1679388 @@ -39816,7 +40114,7 @@ 1 2 - 4335865 + 4347447 @@ -39832,7 +40130,7 @@ 1 2 - 4335865 + 4347447 @@ -39848,12 +40146,12 @@ 1 2 - 2747543 + 2754882 2 798 - 195986 + 196509 @@ -39869,12 +40167,12 @@ 1 2 - 2864163 + 2871813 2 5 - 79366 + 79578 @@ -39890,17 +40188,17 @@ 1 2 - 1526897 + 1530975 2 10 - 127210 + 127550 10 13579 - 20807 + 20862 @@ -39916,17 +40214,17 @@ 1 2 - 1531133 + 1535223 2 12 - 126836 + 127175 12 3231 - 16944 + 16990 @@ -39936,15 +40234,15 @@ includes - 397817 + 364863 id - 397817 + 364863 included - 73281 + 67210 @@ -39958,7 +40256,7 @@ 1 2 - 397817 + 364863 @@ -39974,37 +40272,37 @@ 1 2 - 36264 + 33260 2 3 - 11789 + 10812 3 4 - 6184 + 5672 4 6 - 6685 + 6132 6 11 - 5644 + 5176 11 47 - 5499 + 5043 47 793 - 1213 + 1112 @@ -40014,15 +40312,15 @@ link_targets - 923 + 846 id - 923 + 846 binary - 923 + 846 @@ -40036,7 +40334,7 @@ 1 2 - 923 + 846 @@ -40052,7 +40350,7 @@ 1 2 - 923 + 846 @@ -40062,15 +40360,15 @@ link_parent - 38113722 + 30397565 element - 4847512 + 3866129 link_target - 427 + 340 @@ -40084,17 +40382,17 @@ 1 2 - 665225 + 530549 2 9 - 33795 + 26953 9 10 - 4148492 + 3308626 @@ -40110,52 +40408,52 @@ 3 4 - 42 + 34 97356 97357 - 42 + 34 97475 97476 - 42 + 34 97528 97529 - 42 + 34 97555 97556 - 42 + 34 97577 97578 - 42 + 34 97609 97610 - 42 + 34 99616 99617 - 42 + 34 102996 102997 - 42 + 34 104360 104361 - 42 + 34 diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme new file mode 100644 index 000000000000..a8c2176e9a5c --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme @@ -0,0 +1,2494 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..9baef67d1ffc --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme @@ -0,0 +1,2499 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +namespaceattributes( + int namespace_id: @namespace ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +| 40 = @stmt_leave +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +type_is_vla(unique int type_id: @derivedtype ref) + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if; + +consteval_if_then( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int then_id: @stmt ref +); + +consteval_if_else( + unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@parameterized_element = @function | @stmt_block | @requires_expr; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @parameterized_element ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 14 = @ppd_ms_import +| 15 = @ppd_elifdef +| 16 = @ppd_elifndef +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties new file mode 100644 index 000000000000..9a6e7e428a7f --- /dev/null +++ b/cpp/ql/lib/upgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties @@ -0,0 +1,2 @@ +description: Add a predicate `getAnAttribute` to `Namespace` +compatibility: backwards diff --git a/cpp/ql/test/library-tests/attributes/namespace/namespace.expected b/cpp/ql/test/library-tests/attributes/namespace/namespace.expected new file mode 100644 index 000000000000..a6def774033d --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/namespace.expected @@ -0,0 +1,11 @@ +| file://:0:0:0:0 | MultiSquared | test.cpp:10:13:10:22 | deprecated | +| file://:0:0:0:0 | MultiSquared | test.cpp:10:25:10:36 | maybe_unused | +| file://:0:0:0:0 | MultiSquared | test.cpp:11:13:11:22 | deprecated | +| file://:0:0:0:0 | MultiSquared | test.cpp:11:25:11:36 | maybe_unused | +| file://:0:0:0:0 | NamespaceTest | test.cpp:1:26:1:35 | deprecated | +| file://:0:0:0:0 | NamespaceTest | test.cpp:2:26:2:35 | deprecated | +| file://:0:0:0:0 | NamespaceTest | test.cpp:3:26:3:37 | maybe_unused | +| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:26:4:35 | deprecated | +| test.cpp:4:53:4:61 | MultiAttr | test.cpp:4:38:4:49 | maybe_unused | +| test.cpp:6:43:6:56 | OuterNamespace::InnerNamespace | test.cpp:6:30:6:39 | deprecated | +| test.cpp:9:46:9:61 | NamespaceSquared | test.cpp:9:13:9:22 | deprecated | diff --git a/cpp/ql/test/library-tests/attributes/namespace/namespace.ql b/cpp/ql/test/library-tests/attributes/namespace/namespace.ql new file mode 100644 index 000000000000..b1de550728a0 --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/namespace.ql @@ -0,0 +1,4 @@ +import cpp + +from Namespace ns +select ns, ns.getAnAttribute() diff --git a/cpp/ql/test/library-tests/attributes/namespace/test.cpp b/cpp/ql/test/library-tests/attributes/namespace/test.cpp new file mode 100644 index 000000000000..564947e36b91 --- /dev/null +++ b/cpp/ql/test/library-tests/attributes/namespace/test.cpp @@ -0,0 +1,11 @@ +namespace __attribute__((deprecated)) NamespaceTest {} +namespace __attribute__((deprecated)) NamespaceTest {} +namespace __attribute__((maybe_unused)) NamespaceTest {} +namespace __attribute__((deprecated, maybe_unused)) MultiAttr {} +namespace OuterNamespace { + namespace __attribute__((deprecated)) InnerNamespace {} +} + +namespace [[deprecated("NamespaceSquared")]] NamespaceSquared {} +namespace [[deprecated, maybe_unused]] MultiSquared {} +namespace [[deprecated, maybe_unused]] MultiSquared {} \ No newline at end of file